asp.net mvc3:如何返回原始 html 以查看?

问题描述 投票:0回答:7

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

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

@{
    ViewBag.Title = "Index";
}

@Html.Raw(ViewBag.HtmlOutput)
c# asp.net-mvc-3 controller return
7个回答
156
投票

这样做没有多大意义,因为

View
应该生成 html,而不是控制器。但无论如何,您可以使用 Controller.Content 方法,它使您能够指定结果 html,以及内容类型和编码

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

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

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

事实上,对于除

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


8
投票

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


6
投票

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

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

注意: 不要忘记在您的视图页面中添加 bootstrap

css
js

希望能帮助别人。


5
投票

对我(ASP.NET Core)有用的是设置返回类型

ContentResult
,然后将 HMTL 包装到其中并将 ContentType 设置为
"text/html; charset=UTF-8"
。这很重要,因为否则它不会被解释为 HTML 并且 HTML 语言将显示为文本。

这里是例子,控制器类的一部分:

/// <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;
}

2
投票

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

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

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

@Html.Raw(Model)

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

-2
投票

在控制器中你可以使用

MvcHtmlString

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

在您的视图中,您可以简单地使用您在控制器中设置的动态属性,如下所示

<div>
        @ViewBag.EncodedHtml
</div>
© www.soinside.com 2019 - 2024. All rights reserved.