我需要在 MVC Razor 中对属性值进行编码吗?

2024-03-01

在 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))。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我需要在 MVC Razor 中对属性值进行编码吗? 的相关文章

随机推荐

  • 为什么这段 PHP 代码只回显“Array”?

    这是我的代码 if isset POST check AND POST check First errormessage array if empty POST full name strlen POST full name lt 4 er
  • Windows服务“自托管”WCF:压缩?

    在 IIS 中使用 WCF 压缩我可以找到文档 但它面向使用 IIS 功能 我可以找到人们谈论他们如何编写自己的压缩处理程序 但这一切看起来都很定制 是否有压缩 WCF 的最佳实践 我们正在使用 http 绑定 编辑 将其设置为维基 没有任
  • Dart 中的字符串文字类型类似物

    我知道在 Dart 中没有字符串文字类型 例如 interface IButtonProps readonly variant primary secondary readonly size small regular big a litt
  • 以编程方式添加来自 Laravel 包的 CSRF 检查的异常

    问题简而言之 我正在寻找一种方法来删除VerifyCsrfToken来自包内的全局中间件管道without用户必须修改App Http Middleware VerifyCsrfToken 这可能吗 用例 我正在开发一个包 可以轻松地将推送
  • 查询 DynamoDB

    我有一个 DynamoDB 表 其中一个字母数字字符串作为哈希键 例如 d4ed6962 3ec2 4312 a480 96ecbb48c9da 我需要根据表中的另一个字段查询表 因此我需要查询来选择所有键 例如我的字段 x 位于 dat
  • 发生托管异常时“无可用源” - WPF Visual Studio 2010

    由于某种原因 我的 Visual Studio 2010 没有在我自己的代码上加载调试符号 我正在使用默认的 WPF 应用程序解决方案 使用我正在开发的示例 WPF 应用程序 并在调试模式下运行 当我进入调试状态时 我可以单步执行我的代码
  • Spark zipWithIndex 并行实现安全吗?

    如果我有一个文件 并且每行做了一个 RDD zipWithIndex row1 id1001 name address 0 row2 id1001 name address 1 row100000 id1001 name address 1
  • 无法从袜子确定袜子版本

    使用代理连接 HTTP 代理 10 3 100 207 端口 8080 使用python请求模块get函数 出现以下错误 无法从socks 10 3 100 207 8080 确定SOCKS版本 Try export all proxy s
  • 上传大文件到ftp C#

    我正在使用此代码将大文件上传到 ftp 站点 Code using FileStream fs new FileStream FileLoc FileMode Open FileAccess Read string ftpUrl strin
  • 升级到jetty-9.3.3后JSP编译错误

    我有一个在嵌入式 Jetty 7 6 8 jdk 6 上运行的 webapp 应用程序 但由于浏览器上的 Diffie Hellman 错误 我们决定迁移到较新版本的 Jetty 因此 我们迁移到 Jetty 9 3 3 由于Jetty 9
  • Hibernate 问题 java.lang.Boolean 无法使用 JDK 1.7 转换为 java.lang.String

    我面临着 Hibernate 的问题 使用 Hibernate 3 2 6 和 JDK 1 7 0 21 这个问题是由于 JDK 与 Hibernate 版本的兼容性造成的吗 这个问题是随机的 我仍然无法找到重现的步骤 2014 07 14
  • 如何为对象集合生成唯一的哈希值,而与它们的顺序无关[重复]

    这个问题在这里已经有答案了 假设我有课 public class MyClass public string Type get set public int Id get set 我有一个集合类 它只是一个强类型列表 public clas
  • 在Naoqi 2.5中的pepper平板电脑上安装Android应用程序

    我想使用 NaoQi 2 5 在 Pepper 上安装 Android 应用程序 为了实现这一点 尝试使用 AlTabletService 的隐藏方法 installApk 我在android studios中构建了一个APK并将其部署在p
  • 以无边框形式绘制夹具

    所以我有一个无边框表单 我需要调整它的大小 通过单击 4 个边或角中的任何一个 澄清一下 我希望我的表单像 Windows 7 中的默认便签一样无边框 通过使用 Julien Lebosquain 在这篇文章中提供的代码 我已经让它可以工作
  • 无法通过 OleDb 读取大小超过 ~1mb 的 xlsx 文件

    我想使用 sql 批量复制来加载数据 xlsx文件到数据库 但是 当文件大小超过大约 1mb 时 我遇到了问题 当我尝试打开时OleDbConnection我收到一个错误 No error message available result
  • MYSQL存储多张图片

    我有一个网页 用户可以在其中上传带有图像的文章 用户可以随文章上传的图像数量没有限制 MySQL 数据库中的每一行代表许多文章中的一篇 存储所有这些图像的最佳方式是什么 我知道我会使用 BLOBS LONGBLOBS 但如果我无法控制用户上
  • 如何在Python中可视化距离矩阵? [复制]

    这个问题在这里已经有答案了 我有一个距离矩阵 作为 DataFrame 如下所示 我想为其创建一个像第二个图一样的图来可视化距离 Python中是否有任何可用的绘图对象可以可视化距离矩阵 尝试以下任一方法 NetworkX http net
  • Docker 运行不工作,它说需要至少 1 个参数

    我正在学习 docker 并尝试运行现有的映像 第一个命令工作正常 command 1 docker run name static site e AUTHOR Mathi1 d P dockersamples static site 但下
  • 保持 Git 功能分支最新的策略

    我喜欢让我的功能分支与开发保持同步 频繁执行 git merge no ffdevelopment 有什么问题吗 然后最后运行 git flow feature finish feature1 这些功能分支是共享的 这意味着其他人可能正在处
  • 我需要在 MVC Razor 中对属性值进行编码吗?

    在 cshtml 文件中 我将一个字符串分配给一个属性 例如