在 Razor 中我可以这样做:
<p @Html.MyCustomDataAttributeFor(person) >@person.Name</p>
要渲染这样的东西:
<p data-custom-person-id="1234567890" >Fred</p>
然后我真的必须在(不显眼的)JavaScript 中执行此操作吗:
$('p[data-custom-person-id="1234567890"]').css('background-color','red');
当我更愿意这样做时:
$('p[@Html.MyCustomDataAttributeFor(person)]').css('background-color','red');
要是我可以就好了,否则如果 HTML 帮助程序生成的数据属性发生变化,我的客户端代码将不再为该元素设置样式。
最佳答案
您能否将脚本指向 .cshtml 文件?
<script type="text/javascript" src="/myscript.cshtml"></script>
我想我已经对 .php 和 .aspx 都这样做了,所以我看不出它不应该工作的原因。 在这些情况下,它会让服务器首先处理文件。
否则您可以使用客户 HttpHandler
在发送到客户端之前解析您想要的服务器端的任何文本。
然而,最简单的方法是从 Razor 设置一些 Javascript 变量,即:
<script type="text/javascript">
var customerId = '@Html.MyCustomDataAttributeFor(person)';
</script>
然后写:
$('p[' + customerId + ']').css('background-color','red');
关于c# - JavaScript 中的 HTML 助手?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14453704/