JavaScript代码块中的Razor语法
我想知道在JavaScript代码中使用razor是否是一种好的实践。例如:JavaScript代码块中的Razor语法,javascript,html,asp.net-mvc-3,razor,Javascript,Html,Asp.net Mvc 3,Razor,我想知道在JavaScript代码中使用razor是否是一种好的实践。例如: <script type="text/javascript"> var variable = @some.Id </script> var variable=@some.Id 或者最好创建隐藏的值,然后使用JavaScript,就像这样 <input type="hidden" id="someId" value"@some.Id" /> <script type
<script type="text/javascript">
var variable = @some.Id
</script>
var variable=@some.Id
或者最好创建隐藏的值,然后使用JavaScript,就像这样
<input type="hidden" id="someId" value"@some.Id" />
<script type="text/javascript">
var variable = $('#someId').val();
</script>
var变量=$('#someId').val();
编辑:
@{
var formVariables=serializer.Serialize(新
{
id=Model.id,
name=Model.name,
年龄=模特。年龄
});
}
这是一个好的解决方案吗?Razor将在服务器端进行解析,并由相关输出替换。因此,在我看来,这是完全无关紧要的,如果你把它放在Javascript或HTML中——在客户端,只有输出值是可见的。因此,在上面的示例中,我会选择第一个选项(将其直接放在JS中),因为您不会有不必要的隐藏输入字段。我认为这个问题没有正确的答案;只有优点和缺点 在Javascript中使用Razor的优点
- 脚本已绑定到视图模型;因此,模型更改将自动获取,错误将在编译时捕获
- 脚本与标记混合在一起,这与web设计最佳实践相反(将脚本放在底部,这样它就永远不会破坏页面)
- 无法编译/缩小脚本,因为它与标记混合在一起
<input type='text' id='myId' data-action='@Url.Action("MyAction")' class='myClass' />
这使得.js和视图之间完全分离。当然,这需要一定程度的计划
希望这有帮助我担心的是干净的代码。例如,如果我想将javascript放在单独的.js文件中,那么,它当然不会这样工作,您必须使用隐藏字段。您建议我采用哪种方式?你认为,哪种方式更适合你的工作opinion@karaxuna我倾向于同意Trogvar的观点;除非您正在为移动设备构建网站,并且正在使用大量脚本。@karaxuna,否则我可能倾向于使用外部.JS文件。我看到吉姆·托兰提出了一些更好的观点,可以添加到我上面的优点列表中。谢谢@dbaseman。现在我想到了不同的解决方案。请看编辑
<input type='text' id='myId' data-action='@Url.Action("MyAction")' class='myClass' />
var targetAction = $('#myId').attr('data-action');