如何在 HTML 中为视图模型字符串 属性 显示撇号
How to display an apostrophe in HTML for viewmodel string property
我的 asp.net 视图使用布局模板在每个页面的顶部显示客户的姓名。这工作正常,除非为名称 属性 分配了一个包含撇号的值。该视图显示撇号的 ascii 代码而不是实际的撇号。例如:
如果客户端的名称设置为 "Client's Name",视图将名称呈现为 "Client's Name"
而不是 "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 以便显示撇号?
根据 this answer ActionLink
对传入的内容进行编码。因此,它被双重编码。
检查 @ClientName().ToString()
的值,它可能已经被编码,因为助手默认对它们的输出进行编码;你可能需要取消编码,或者不从你的助手那里编码。
一个解决方案是让你的助手 not escape its content
@{ WriteLiteral(((ClientModel)Session["CurrentClient"]).Name); }
或
@Html.Raw(((ClientModel)Session["CurrentClient"]).Name))
如果您 @ClientName().ToString()
must un-encode the results,请使用
@Html.ActionLink(
"Client[" +
HttpUtility.HtmlDecode(@ClientName().ToString()) +
"]",
"Index", "Home")
我的 asp.net 视图使用布局模板在每个页面的顶部显示客户的姓名。这工作正常,除非为名称 属性 分配了一个包含撇号的值。该视图显示撇号的 ascii 代码而不是实际的撇号。例如:
如果客户端的名称设置为 "Client's Name",视图将名称呈现为 "Client's Name"
而不是 "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 以便显示撇号?
根据 this answer ActionLink
对传入的内容进行编码。因此,它被双重编码。
检查 @ClientName().ToString()
的值,它可能已经被编码,因为助手默认对它们的输出进行编码;你可能需要取消编码,或者不从你的助手那里编码。
一个解决方案是让你的助手 not escape its content
@{ WriteLiteral(((ClientModel)Session["CurrentClient"]).Name); }
或
@Html.Raw(((ClientModel)Session["CurrentClient"]).Name))
如果您 @ClientName().ToString()
must un-encode the results,请使用
@Html.ActionLink(
"Client[" +
HttpUtility.HtmlDecode(@ClientName().ToString()) +
"]",
"Index", "Home")