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("&lt;html&gt;&lt;/html&gt;", "text/html");【参考方案4】:

尝试返回引导警报消息,这对我有用

return Content("<div class='alert alert-success'><a class='close' data-dismiss='alert'>
&times;</a><strong style='width:12px'>Thanks!</strong> updated successfully</div>");

注意:不要忘记在您的视图页面中添加引导程序cssjs

希望能帮助别人。

【讨论】:

谢谢你,它真的帮了我:)【参考方案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 以查看的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET MVC3 版本发布 [关闭]

将自定义 ValueProviderFactories 添加到 ASP.NET MVC3?

经典ASP.NET MVC3.0入门详解

asp.net mvc3 linq 多表查询怎么把返回的集合在页面循环输出

使用razor/asp.net mvc3生成静态html页面?

ASP.NET MVC3 - 带有@Html.EditorFor 的文本区域