【发布时间】:2016-03-05 13:55:45
【问题描述】:
我的asp.net 视图使用布局模板在每个页面的顶部显示客户姓名。这可以正常工作,除非为 name 属性分配了一个包含撇号的值。该视图显示撇号的 ascii 代码,而不是实际的撇号。例如:
如果客户名称设置为“客户名称”,视图会将名称呈现为"Client's Name",而不是“客户名称”
布局模板代码:
@helper ClientName()
{
if (Session["CurrentClient"] != null)
{
@(((ClientModel)Session["CurrentClient"]).Name);
}
else
{
@String.Format("{0}", "None");
}
}
@Html.ActionLink("Client[" + @ClientName().ToString() + "]", "Index", "Home", null, new { @class = "navbar-brand" })
如何将字符串值转换为 HTML 以便显示撇号?
【问题讨论】:
-
"视图将名称呈现为
"Client's Name"" 但是您只看到一个撇号因为'是一个HTML 实体,或者HTML 是否包含'而您实际上看到'on屏幕?您确定Session["CurrentClient"]).Name尚未进行 HTML 编码吗? -
我确定 Session["CurrentClient"]).Name 尚未经过 HTML 编码。该值设置为来自控制器中数据库的字符串值。所以对于“国王的女儿”的价值,我实际上看到的是“国王的女儿”
-
见stackoverflow.com/a/10146258/227299。另外,张贴一些证明它尚未编码的证据。如果您尝试
@Html.ActionLink(HttpUtility.HtmlDecode("Client[" + @ClientName().ToString() + "]"), "Index", "Home")并且它有效,则意味着它已经编码。
标签: asp.net html asp.net ascii