如何在 HTML 中为视图模型字符串 属性 显示撇号

How to display an apostrophe in HTML for viewmodel string property

我的 视图使用布局模板在每个页面的顶部显示客户的姓名。这工作正常,除非为名称 属性 分配了一个包含撇号的值。该视图显示撇号的 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")