ASP.NET MVC视图中HTML输入框如何显示带重音的字符?
解决ViewBag传递特殊字符在jQuery中显示为HTML实体的问题
这个问题我之前也碰到过,本质是ASP.NET MVC默认的HTML编码机制在搞鬼——为了防范XSS攻击,框架会自动对ViewBag输出的字符串进行编码,所以法语单词里的é被转成了HTML实体é,直接在jQuery里用@ViewBag.T就会拿到编码后的内容。
这里有两种简单的解决方法:
方法一:在jQuery中用Html.Raw()阻止编码
保持Controller代码不变:
ViewBag.T = "Espèce";
修改View中的jQuery代码,用Html.Raw()包裹ViewBag值,明确告诉框架不要对这个字符串进行编码:
$("#T").val("@Html.Raw(ViewBag.T)").focus();
HTML输入框代码保持原样即可:
<div> <input type="text" id="T" value="" /> </div>
方法二:直接在输入框value属性中绑定(更直观)
如果不需要动态赋值,也可以直接在HTML输入框的value属性里用Html.Raw()绑定ViewBag值,之后单独处理聚焦逻辑:
<div> <input type="text" id="T" value="@Html.Raw(ViewBag.T)" /> </div>
对应的jQuery代码可以简化为:
$("#T").focus();
两种方法都能让输入框正确显示Espèce而非编码后的实体内容,你可以根据自己的场景选择~
内容的提问来源于stack exchange,提问作者ADS MB
相关产品推荐
相关产品推荐

