我正在尝试更改我的一个剃刀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();
}
仍然无效。
有什么想法吗?
答案 0 :(得分:3)
您需要将视图渲染为字符串并从操作方法向其发送字符串。 以下是如何将视图呈现为字符串(取自this answer):
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);
}