asp.net-mvc-5 – 我需要在MVC Razor中编码属性值吗?
|
在cshtml文件中,我将一个字符串分配给一个属性.例如: <input name="somename" value="@Model.Value"> 由于@ Model.Value字符串可以包含任何Unicode字符,因此显然必须对字符串进行编码. Razor会自动编码这个值吗?我猜它不会或不会因为我可以很容易地在它之后放一个@ Html.Raw将整个事情分解成两个标签. 我想我需要做的是: <input name="somename" value="@Html.Raw(Html.AttributeEncode(Model.Value))"> 那是对的吗? 同样,如果我在脚本中的JavaScript字符串中嵌入字符串值,我应该使用: //I could use Ajax instead of HttpUtility here,but Ajax just wraps the same call.
<script>$('id').data('key','@Html.Raw(HttpUtility.JavaScriptStringEncode(Model.Value))');</script>
解决方法默认情况下,Razor对字符串执行HTML编码.根据您的字符串注入HTML流的位置,这可能是也可能不是正确的编码.如果它不是正确的编码,那么您需要自己执行正确的编码并确保返回MvcHtmlString(即IHtmlString)以确保Razor单独留下您的自定义编码.由于Razor使用HTML编码,这在技术上与HTML属性编码不同(它是一个子集),因此使用@Html.Raw(Html.AttributeEncode(Model.Value))对HTML属性进行编码并没有错.同时,它也没有必要,因为默认的HTML编码使用相同的基本格式,并且最终将编码一个不需要在HTML属性值中编码的几个字符. 另一方面,在将字符串注入JavaScript字符串的引号的最后一种情况下,HTML编码绝对不正确,所以你肯定需要像我一样自己执行编码:@ Html.Raw (HttpUtility.JavaScriptStringEncode(Model.Value)). (编辑:南阳站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 为不同项目中的所有Web应用程序网页添加命名空间
- ASP.Net Web应用程序安全性不适用于IIS 7?
- asp.net – 有没有一个原因,cshtml不受欢迎
- asp.net-mvc – 神秘的ASP.NET MVC Action高延迟问题?
- asp.net-mvc – 如何在RegularExpression中忽略大小写?
- asp.net后台cs中的JSON格式变量在前台Js中调用方法(前后台示
- asp.net – 如何从日历控件中获取所选日期?
- asp.net – 我应该使用WebMatrix构建一个真实世界的网站吗?
- asp.net-mvc – 如何在ASP.NET MVC中生成弹出页面链接
- asp.net – 是否可以根据用户角色隐藏/显示Kendo网格列?
- asp.net – 使用app_offline.htm使应用程序脱机,
- asp.net – 经过身份验证的服务不支持跨域javasc
- asp.net-mvc – 使用html.actionlink将模型从视图
- iis-7 – ASP 3.0应用程序对象
- asp.net-ajax – Ajax脚本管理器和母版页
- asp.net-mvc-3 – MVC3视图继承不可能?
- asp.net-mvc – 如何在asp.net中使用mvc构建购物
- asp.net – 多个用户控件和JavaScript
- webforms – ASP.Net Core 1.0是否支持WebForm项
- asp.net-mvc – 如何在ASP.NET MVC部分视图中使用
