【发布时间】: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 标记文本的文本:
<table><tr><th>...
而不是像以前那样在视觉上将其呈现为表格,直到现在。 “Nice Table”标题仍能正常显示。
查看 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。该字符串是根据我在数据层中查找的内容构建的。
【问题讨论】:
-
您的值是否与标签一起保存到数据库中??
-
@Zergling 这是一个服务器端 C# 字符串,它是视图模型的数据成员。我会在一分钟内将接口添加到上面的描述中。
-
如果 查看源代码 不起作用,那么您可能遇到了浏览器问题,而不是代码问题。您最近是否从 MVC3 升级到 4 或 5?
-
Html.Raw(..) 能解决你的问题吗?
-
@LeventEsen 啊哈!是的,它确实!我忘记了有一个 Html.Raw() 方法可以尝试!不知道为什么它之前工作过并停止工作,但这确实解决了问题!
标签: c# asp.net asp.net-mvc-3