如何设置内容类型

本文关键字:类型 设置 何设置 | 更新日期: 2023-09-27 18:34:25

我正在尝试更改我的一个 razor MVC5 视图以生成纯文本而不是 html。我把这个:

@{
    this.Response.ClearContent();
    this.Response.ContentType = "text/plain";
}

在我的 cshtml 文件中,但它仍在生成 HTML。我还尝试在控制器中设置它:

[AcceptVerbs("GET", "POST", "PUT", "DELETE")]
public ActionResult Version()
{
    Response.ContentType = "text/plain";
    ViewData["ver"] = "v1.1";
    return View();
}

仍然不起作用。

有什么想法吗?

如何设置内容类型

您需要将视图呈现为字符串,并从操作方法向其发送字符串。以下是将视图呈现为字符串的方法(取自此答案):

public string RenderRazorViewToString(string viewName, object model)
{
    ViewData.Model = model;
    using (var sw = new StringWriter())
    {
        var viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName);
        var viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw);
        viewResult.View.Render(viewContext, sw);
        return sw.GetStringBuilder().ToString();
    }
}

当你得到一个渲染的字符串时,只需在你的操作中做return Content(renderedString)

public ActionResult Version()
{        
    ViewData["ver"] = "v1.1";
    var renderedString = RenderRazorViewToString("Version", null);
    return Content(renderedString);
}