【问题标题】:Why has Html.DisplayTextFor stopped showing the text as HTML?为什么 Html.DisplayTextFor 停止将文本显示为 HTML?
【发布时间】:2015-12-23 07:52:22
【问题描述】:

我有一个 ASP.NET MVC3 网页,它过去可以很好地显示 HTML 的 C# 字符串。我的服务器代码以编程方式加载带有 HTML 标记的字符串以获得漂亮的表格。以下cshtml多年来一直将这张漂亮的表格展示为一张漂亮的表格:

<h3>Nice Table:</h3>
@Html.DisplayTextFor( model => model.sNiceTable )

但今天我们注意到浏览器(Firefox 和 IE)将其显示为一堆显示 HTML 标记文本的文本:

&lt;table&gt;&lt;tr&gt;&lt;th&gt;...

而不是像以前那样在视觉上将其呈现为表格,直到现在。 “Nice Table”标题仍能正常显示。

查看 Firefox 开发人员 Inspector 中的文本显示的 HTML 看起来应该呈现为 HTML,但是(在以彩色显示 &lt;h3&gt; 标记后)它也有我的字符串中的那些标记为黑色,即使当我粘贴时将相同的字符串放入 HTML 文件并加载它,它显示了漂亮的表格。也就是说,Inspector 显示代码好像它应该可以工作,但是由于某种原因,我的字符串是黑色的,它没有显示在它的代码视图中。

尝试在 Firefox 或 IE 中使用“查看源代码”似乎对此无法使用,因为出于某种原因,视图部分甚至没有出现在那里。

我看到还有其他各种方法,例如 Display() 和 DisplayFor(),但它们似乎做同样的事情。

自从它上次工作以来,我还没有真正接触过这个页面。我怀疑唯一改变的是应用了一些 MS 更新,这些更新对我的项目有一些其他烦人的副作用。

我该怎么做才能让这个文本再次呈现,而不是将字符串中的 HTML 标记作为文本输出?

编辑:model.sNiceTable是viewmodel的C#字符串数据成员,其中接口为:

public interface IMemberStatsViewModel
{
    string sNiceTable { get; set; }
    // other properties...
}

它的值被组装在我的代码中,该代码在视图模型的构造函数中被调用:

public MemberStatsViewModel()
    : base(new DataLayer.DataLayer(), ClientInterfaceTypeEnum.Web)
{
    InitializeMe();
}

InitializeMe() 调用数据层函数,该函数返回 C# 字符串并将其分配给 sNiceTable。该字符串是根据我在数据层中查找的内容构建的。

【问题讨论】:

  • 您的值是否与标签一起保存到数据库中??
  • @Zergling 这是一个服务器端 C# 字符串,它是视图模型的数据成员。我会在一分钟内将接口添加到上面的描述中。
  • 如果 查看源代码 不起作用,那么您可能遇到了浏览器问题,而不是代码问题。您最近是否从 MVC3 升级到 4 或 5?
  • Html.Raw(..) 能解决你的问题吗?
  • @LeventEsen 啊哈!是的,它确实!我忘记了有一个 Html.Raw() 方法可以尝试!不知道为什么它之前工作过并停止工作,但这确实解决了问题!

标签: c# asp.net asp.net-mvc-3


【解决方案1】:

您可以使用Html.Raw

   <h3>Nice Table:</h3>
   @Html.Raw(model.sNiceTable)

【讨论】:

    猜你喜欢
    • 2019-03-14
    • 1970-01-01
    • 2012-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-13
    • 2013-05-19
    • 1970-01-01
    相关资源
    最近更新 更多