我正在尝试在ActionResult
中返回HTML。我已经尝试过了:
[Produces("text/html")]
public ActionResult DisplayWebPage()
{
return Content("<html><p><i>Hello! You are trying to view <u>something!</u></i></p></html>");
}
<iframe>
中没有显示任何内容。我试过了:
[Produces("text/html")]
public string DisplayWebPage()
{
return HttpUtility.HtmlDecode("<html><p><i>Hello! You are trying to view <u>something!</u></i></p></html>");
}
Microsoft Edge向我提供以下消息:
HTTP 406错误
此页面不是我们的语言 Microsoft Edge无法显示此页面,因为它不是可以显示的格式。
Firefox和Chrome拒绝显示任何内容。我还尝试了HtmlEncode
和普通ActionResult
。以下是我视图中<iframe>
的细分:
<div class="row">
<div class="col-sm-12">
<iframe src="/Home/DisplayWebPage" class="col-sm-12"></iframe>
</div>
</div>
为什么我没有收到任何结果?我做错了吗?
答案 0 :(得分:6)
有两种方法可以做到这一点: 1。将行动更新为:
flatten
2。将行动更新为:
public IActionResult Index()
{
var content = "<html><body><h1>Hello World</h1><p>Some text</p></body></html>";
return new ContentResult()
{
Content = content,
ContentType = "text/html",
};
}
并将startup.cs中的AddMvc行更新为:
[Produces("text/html")]
public IActionResult Index()
{
return Ok("<html><p><i>Hello! You are trying to view <u>something!</u></i></p></html>");
}
其中HtmlOutputFormatter是:
services.AddMvc(options => options.OutputFormatters.Add(new HtmlOutputFormatter()));
答案 1 :(得分:5)
Produces("text/html")
不会产生任何影响,因为HTML没有内置的输出格式化程序。
要解决您的问题,只需明确指定内容类型:
public ActionResult DisplayWebPage()
{
return Content("<html><p><i>Hello! You are trying to view <u>something!</u></i></p></html>", "text/html");
}
另一种选择是通过string
标题将您的操作的返回类型更改为text/html
并请求Accept
格式。有关详细信息,请参阅Introduction to formatting response。