首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Microsoft.AspNetCore.Html.HtmlString

使用Microsoft.AspNetCore.Html.HtmlString
EN

Stack Overflow用户
提问于 2018-03-29 23:32:29
回答 3查看 9.7K关注 0票数 7

它是一个运行在VisualStudio2017上的.Net.Net Core2.0应用程序,我想显示一个在视图上返回的HTML。

我已经将Microsoft.AspNetCore.Html.Abstractions 努基特添加到我的应用程序中,我希望在Razor视图上显示一个HTML,这就是我的CSHTML的样子。

代码语言:javascript
运行
复制
@model EDMTLC.Models.QuickResultViewModel
@using Microsoft.AspNetCore.Html;
<div>@Html.Display(Model.ResultHTML) </div>
<div>TEST</div>

我不认为@Html.Display是我应该做的。在以前的版本.Net中,我经常

代码语言:javascript
运行
复制
<div>
    <text> @MvcHtmlString.Create(Model.ReportHTML)</text>
 </div>

但是这将不再适用于Core2.0

有人能帮忙举个例子吗?我找到了线程,但没有帮助!

谢谢

EN

回答 3

Stack Overflow用户

发布于 2020-03-08 17:11:21

一个更优雅的解决方案是构建一个扩展方法:

代码语言:javascript
运行
复制
using Microsoft.AspNetCore.Html;
public static class StringExtensions
{
    /// <summary>
    /// Convert a standard string into a htmlstring for rendering in a view
    /// </summary>
    /// <param name="value"></param>
    /// <returns></returns>
    public static HtmlString ToHtmlString(this string value)
    {
        return new HtmlString(value);
    }
}

在您的_ViewImports文件中,如果需要,请包括名称空间:

代码语言:javascript
运行
复制
@using MyProject.Extensions

现在,在您的观点中,您将能够做到:

代码语言:javascript
运行
复制
<div>@Model.ReportHTML.ToHtmlString()</div>

我建议在现实世界的应用程序中做更多的消毒,但这应该会回答OP的问题。

票数 7
EN

Stack Overflow用户

发布于 2018-03-29 23:51:49

你试过@Html.Raw()了吗?它应该将值显示为原始字符串,而不进行编码。

代码语言:javascript
运行
复制
<pre>
    <code>@Html.Raw(Model.ReportHTML)</code>
</pre>

这应该适用于Asp.Net Core Mvc 2.0和早期版本,而不需要安装额外的NuGet包。

备注

  1. 为了使用@Html.Display(),如果要向参数传递字符串表达式,则该参数必须与视图模型中定义的属性之一相匹配。 //这不工作@Html.Display(Model.ResultHTML) //,但它编码了HTML @Html.Display("ResultHtml")
  2. 或者您可以使用@Html.DisplayFor()并传递一个lamba表达式以避免视图中的神奇字符串 //这是可行的,但它编码了HTML @Html.DisplayFor(x => x.ResultHTML)
票数 3
EN

Stack Overflow用户

发布于 2020-02-10 12:43:37

一般规则是为了安全等原因而避免使用Html.Raw,最好像这样使用Microsoft.AspNetCore.Html.HtmlContentBuilder

代码语言:javascript
运行
复制
Microsoft.AspNetCore.Html.HtmlContentBuilder DatabaseList = new Microsoft.AspNetCore.Html.HtmlContentBuilder();
DatabaseList.AppendHtml("The list of databases on this server is: " + "<br />");
foreach (var db in dbList) {
    DatabaseList.AppendHtml(db.ToString() + "<br />");
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49566489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档