asp.net mvc3返回raw html来查看

时间:2011-10-07 00:45:02

标签: asp.net-mvc-3 controller return

还有其他方法可以从控制器返回原始html吗?而不是仅使用viewbag。如下所示:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        ViewBag.HtmlOutput = "<HTML></HTML>";
        return View();
    }
}

@{
    ViewBag.Title = "Index";
}

@Html.Raw(ViewBag.HtmlOutput)

7 个答案:

答案 0 :(得分:135)

这样做没有多大意义,因为View应该生成html,而不是控制器。但无论如何,你可以使用Controller.Content method,它可以指定结果html,内容类型和编码

public ActionResult Index()
{
    return Content("<html></html>");
}

或者你可以使用asp.net-mvc框架内置的技巧 - 直接使动作返回字符串。它会将字符串内容传送到用户的浏览器中。

public string Index()
{
    return "<html></html>";
}

事实上,对于ActionResult以外的任何操作结果,框架会尝试将其序列化为字符串并写入响应。

答案 1 :(得分:8)

只需在MvcHtmlString类型的视图模型中创建一个属性。你不需要Html.Raw它。

答案 2 :(得分:5)

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

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

希望帮助某人。

答案 3 :(得分:1)

看起来不错,除非您想将其作为模型字符串传递

public class HomeController : Controller
{
    public ActionResult Index()
    {
        string model = "<HTML></HTML>";
        return View(model);
    }
}

@model string
@{
    ViewBag.Title = "Index";
}

@Html.Raw(Model)

答案 4 :(得分:0)

对我来说(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;
}

答案 5 :(得分:-1)

public ActionResult Questionnaire()
{
    return Redirect("~/MedicalHistory.html");
}

答案 6 :(得分:-2)

在控制器中,您可以使用MvcHtmlString

public class HomeController : Controller
{
    public ActionResult Index()
    {
        string rawHtml = "<HTML></HTML>";
        ViewBag.EncodedHtml = MvcHtmlString.Create(rawHtml);
        return View();
    }
}

在您的视图中,您只需使用您在控制器中设置的动态属性,如下所示

<div>
        @ViewBag.EncodedHtml
</div>