C# 使用Microsoft.AspNetCore.Html.HtmlString
它是运行在Visual Studio 2017上的.Net Core 2.0应用程序 我想显示视图中返回的HTML字符串 我已经将Microsoft.AspNetCore.Html.Abstractions添加到我的应用程序中,我想在Razor视图中显示一个Html sting,这就是我的CSHTML的外观C# 使用Microsoft.AspNetCore.Html.HtmlString,c#,asp.net-mvc,razor,asp.net-core-mvc,asp.net-core-2.0,C#,Asp.net Mvc,Razor,Asp.net Core Mvc,Asp.net Core 2.0,它是运行在Visual Studio 2017上的.Net Core 2.0应用程序 我想显示视图中返回的HTML字符串 我已经将Microsoft.AspNetCore.Html.Abstractions添加到我的应用程序中,我想在Razor视图中显示一个Html sting,这就是我的CSHTML的外观 @model EDMTLC.Models.QuickResultViewModel @using Microsoft.AspNetCore.Html; <div>@Html.Di
@model EDMTLC.Models.QuickResultViewModel
@using Microsoft.AspNetCore.Html;
<div>@Html.Display(Model.ResultHTML) </div>
<div>TEST</div>
<pre>
<code>@Html.Raw(Model.ReportHTML)</code>
</pre>
@model-EDMTLC.Models.QuickResultViewModel
@使用Microsoft.AspNetCore.Html;
@Display(Model.ResultHTML)
试验
我不认为@Html.Display是我应该做的。在以前的.Net版本中,我经常
<div>
<text> @MvcHtmlString.Create(Model.ReportHTML)</text>
</div>
@MvcHtmlString.Create(Model.ReportHTML)
但这将不再适用于Core2.0
有人能举个例子吗?我找到了线,但没用
谢谢您试过
@Html.Raw()
吗?它应该将值显示为原始字符串,而不进行编码
这应该适用于Asp.Net核心Mvc 2.0
和以前的版本,而无需安装额外的NuGet软件包
笔记
@Html.Display()
,如果要将字符串表达式传递给参数,则该参数必须与视图模型中定义的属性之一匹配
// This works but it encodes your HTML
@Html.DisplayFor(x => x.ResultHTML)
@Html.DisplayFor()
并传递lamba表达式,以避免视图中出现神奇的字符串
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 />");
}
一般规则是为了安全起见,最好避免使用
Html.Raw
Microsoft.AspNetCore.Html.HtmlContentBuilder
像这样
Microsoft.AspNetCore.Html.HtmlContentBuilder数据库列表=新的Microsoft.AspNetCore.Html.HtmlContentBuilder();
AppendHtml(“此服务器上的数据库列表为:“+”
);
foreach(dbList中的var db){
DatabaseList.AppendHtml(db.ToString()+“
”;
}
更优雅的解决方案是构建扩展方法:
@using MyProject.Extensions
现在,在您的视图中,您将能够执行以下操作:
@Model.ReportHTML.ToHtmlString()
我建议在现实世界的应用程序中进行额外的消毒,但这应该能回答OP的问题
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);
}
}
@using MyProject.Extensions
<div>@Model.ReportHTML.ToHtmlString()</div>