asp.net Html找不到脚本

gcuhipw9  于 2023-08-08  发布在  .NET
关注(0)|答案(2)|浏览(130)

我正在尝试以下代码从webApi显示html页面:

[AcceptVerbs("GET")]
    [AllowAnonymous]
    [Route("ManageAccount/{id}")]
    public HttpResponseMessage ManageAccount(string id)
    {
        if (! String.IsNullOrEmpty(id))
        {

            var path = "C:/Users/user/Project/" + id + ".html";
            var response = new HttpResponseMessage();
            response.Content = new StringContent(File.ReadAllText(path));
            response.Content.Headers.ContentType = new MediaTypeHeaderValue("text/html");
            return response;

        }
        var path2 = "C:/Users/user/Project/Login.html";
        var response2 = new HttpResponseMessage();
        response2.Content = new StringContent(File.ReadAllText(path2));
        response2.Content.Headers.ContentType = new MediaTypeHeaderValue("text/html");
        return response2;
       // return Redirect("Login.html");
    }

字符串
我把ContentType设置为text/html来读取html页面,但是这个页面有脚本,现在所有的脚本都读取为text/html!
请问有什么建议吗?
我该如何解决此问题?

更新:

我得到了,如果脚本加载在服务器上它的工作!
我不知道是否有一种方法来加载我的脚本在服务器上,我不知道如果这个好主意!
对不起,我是这个领域的新手:)谢谢

cczfrluj

cczfrluj1#

  • File.ReadAllText只是一种从文件中阅读文本的方法
  • StringContent只是存储要添加到响应正文的文本的结构。

这两个组件都不包括服务器端脚本编译器。
我认为这是一个MVC架构的问题!你可能知道ASP.NET MVC提供了两种典型的控制器类型:Http.ApiControllerMvc.Controller
简单地理解,ApiController通常只用于处理数据,它不具备用于处理Razor C#的功能。请使用Mvc.Controller来执行此操作。

xurqigkl

xurqigkl2#

Web API 2控制器中的方法可能返回不同的类型。

  • void(只向客户端返回HTTP状态码204)
  • HttpResponseMessage(Web API将返回值转换为HTTP响应文本)
  • IHttpActionResult(此接口的实现允许您创建在处理请求时实现不同场景的对象)

如果需要,我们可以创建自己的类:

using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading;
using System.Threading.Tasks;
using System.Web.Http;
using SomeApp.Models;

public class HtmlResult : IHttpActionResult
{
    private User model;

    public HtmlResult(User model)
    {
        this.model = model;
    }
    public Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken)
    {
        string user = "<html><head><meta charset=utf-8 /></head></body>" +
            "<h2>" + user.Name + "</h2><h3>" + user.Login + "</h3><h3>"
            + user.Bday+ "</h3>" + "</body></html>";

        var tmp = new HttpResponseMessage();
        tmp.Content = new StringContent(user);
        tmp.Content.Headers.ContentType = new MediaTypeHeaderValue("text/html");

        return Task.FromResult(tmp);
    }
}

字符串
让我们尝试用途:

public IHttpActionResult GetUser(int id)
{
    User user = _db.User.Find(id);
    return new HtmlResult(user);
}

相关问题