有没有其他方法可以从控制器返回原始的html?而不是仅仅使用viewbag。如下所示:
public class HomeController : Controller
{
public ActionResult Index()
{
ViewBag.HtmlOutput = "<HTML></HTML>";
return View();
}
}
@{
ViewBag.Title = "Index";
}
@Html.Raw(ViewBag.HtmlOutput)
发布于 2011-10-07 14:57:37
这样做没有多大意义,因为View
应该生成html,而不是控制器。但不管怎样,您可以使用Controller.Content method,它使您能够指定结果html、内容类型和编码
public ActionResult Index()
{
return Content("<html></html>");
}
或者你可以使用asp.net-mvc框架中内置的技巧--让action直接返回字符串。它会将字符串内容传送到用户的浏览器中。
public string Index()
{
return "<html></html>";
}
事实上,对于ActionResult
以外的任何操作结果,框架都会尝试将其序列化为字符串并写入响应。
发布于 2011-10-07 12:23:17
只需在视图模型中创建一个MvcHtmlString类型的属性。那么你也不需要Html.Raw它了。
发布于 2020-07-30 17:09:45
我(ASP.NET核心)的工作是设置返回类型ContentResult
,然后将HMTL包装到其中,并将ContentType设置为"text/html; charset=UTF-8"
。这很重要,因为,否则它不会被解释为HTML,而HTML语言将显示为文本。
下面是这个示例,它是一个Controller类的一部分:
/// <summary>
/// Startup message displayed in browser.
/// </summary>
/// <returns>HTML result</returns>
[HttpGet]
public ContentResult Get()
{
var result = Content("<html><title>DEMO</title><head><h2>Demo started successfully."
+ "<br/>Use <b><a href=\"http://localhost:5000/swagger\">Swagger</a></b>"
+ " to view API.</h2></head><body/></html>");
result.ContentType = "text/html; charset=UTF-8";
return result;
}
https://stackoverflow.com/questions/7682031
复制相似问题