asp.net mvc3 返回原始 html 以查看
Posted
技术标签:
【中文标题】asp.net mvc3 返回原始 html 以查看【英文标题】:asp.net mvc3 return raw html to view 【发布时间】:2011-12-02 16:19:26 【问题描述】:还有其他方法可以从控制器返回原始 html 吗?而不是仅仅使用 viewbag。如下:
public class HomeController : Controller
public ActionResult Index()
ViewBag.HtmlOutput = "<HTML></HTML>";
return View();
@
ViewBag.Title = "Index";
@Html.Raw(ViewBag.HtmlOutput)
【问题讨论】:
我承认直接注入html有很多原因,但我很好奇你为什么会出现这种情况? 我有一些从 dll 生成标记的遗留代码。 【参考方案1】:看起来不错,除非您想将其作为模型字符串传递
public class HomeController : Controller
public ActionResult Index()
string model = "<HTML></HTML>";
return View(model);
@model string
@
ViewBag.Title = "Index";
@Html.Raw(Model)
【讨论】:
【参考方案2】:只需在您的视图模型中创建一个 MvcHtmlString 类型的属性。你也不需要 Html.Raw 它。
【讨论】:
谢谢。没有完全按照你说的使用。你所说的帮助我弄清楚使用 [DataType.Html]【参考方案3】:这样做没有多大意义,因为View
应该生成 html,而不是控制器。但无论如何,您可以使用Controller.Content method,它使您能够指定结果 html、内容类型和编码
public ActionResult Index()
return Content("<html></html>");
或者您可以使用 asp.net-mvc 框架中内置的技巧 - 使操作直接返回字符串。它将字符串内容传递到用户的浏览器中。
public string Index()
return "<html></html>";
实际上,对于ActionResult
以外的任何动作结果,框架都会尝试将其序列化为字符串并写入响应。
【讨论】:
我同意视图生成 html。我的内容思想是从旧版 dll 生成的。如果控制器不是调用的正确位置,那么可能是模型? 使用字符串的返回类型很有趣。这一直有效吗? 是的。任何不是 ActionResult 的东西都被转换为字符串并返回响应 有没有办法将它作为PartialViewResult
返回?
如果要确保呈现为html,添加第二个参数:return Content("<html></html>", "text/html");
【参考方案4】:
尝试返回引导警报消息,这对我有用
return Content("<div class='alert alert-success'><a class='close' data-dismiss='alert'>
×</a><strong style='width:12px'>Thanks!</strong> updated successfully</div>");
注意:不要忘记在您的视图页面中添加引导程序css
和js
希望能帮助别人。
【讨论】:
谢谢你,它真的帮了我:)【参考方案5】:在控制器中你可以使用MvcHtmlString
public class HomeController : Controller
public ActionResult Index()
string rawHtml = "<HTML></HTML>";
ViewBag.EncodedHtml = MvcHtmlString.Create(rawHtml);
return View();
在您的视图中,您可以简单地使用您在控制器中设置的动态属性,如下所示
<div>
@ViewBag.EncodedHtml
</div>
【讨论】:
【参考方案6】:public ActionResult Questionnaire()
return Redirect("~/MedicalHistory.html");
【讨论】:
请在您的回答中描述问题是什么,以及这个 sn-p 将如何解决它,以帮助其他人理解这个答案【参考方案7】:对我有用的 (ASP.NET Core) 是设置返回类型 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;
【讨论】:
以上是关于asp.net mvc3 返回原始 html 以查看的主要内容,如果未能解决你的问题,请参考以下文章
将自定义 ValueProviderFactories 添加到 ASP.NET MVC3?
asp.net mvc3 linq 多表查询怎么把返回的集合在页面循环输出