我有一个ASP.NET MVC3网页,它很好地很好地显示了一个C#的HTML字符串。我的服务器代码以编程方式为带有HTML标记的字符串加载一个漂亮的表。以下cshtml多年来一直将这张漂亮的桌子展示为一张漂亮的桌子:
<h3>Nice Table:</h3>
@Html.DisplayTextFor( model => model.sNiceTable )
但今天我们注意到浏览器(Firefox和IE)将其显示为一堆显示HTML标记文本的文本:
而不是直观地将它呈现为一个表,就像它迄今为止所做的那样。 “Nice Table”标题仍然可以正常显示。
<table><tr><th>...
查看Firefox开发人员Inspector中的文本会显示看起来应该呈现为HTML的HTML,但是(在显示颜色为<h3>
标记之后)它也会将我的字符串中的那些标记显示为黑色,即使我将相同的字符串粘贴到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。该字符串是根据我在数据层中查找的内容构建的。