我想知道在JavaScript代码中使用razor是否是一个好习惯。例如:
<script type="text/javascript">
var variable = @some.Id
</script>
或者最好创建隐藏值,然后使用JavaScript,就像这样?
<input type="hidden" id="someId" value"@some.Id" />
<script type="text/javascript">
var variable = $('#someId').val();
</script>
编辑:
@{
var formVariables = serializer.Serialize(new
{
id = Model.Id,
name = Model.Name,
age = Model.Age
});
<input type="hidden" id="header_variables" value="@formVariables"/>
<script type="text/javascript" src = "/Scipts/..."></script>
}
这是一个好的解决方案吗?
答案 0 :(得分:3)
我个人会使用第二个选项的扩展名并创建一个单独的.js文件。原因是,如果您将工作委托给第三方来处理UI的jquery / javascript部分,那么他们就不需要了解后端功能。
有多种方法可以在输入上使用html5属性(即data-attribute ='foo'),这样您就可以使用可以在外部.js内部解析的属性来“装饰”您的输入。文件。
一个非常简短的例子:
在您看来:
<input type='text' id='myId' data-action='@Url.Action("MyAction")' class='myClass' />
<。>在.js文件中:
var targetAction = $('#myId').attr('data-action');
这使得.js和视图之间完全分离。它当然需要一定程度的规划。
希望这有帮助
答案 1 :(得分:2)
Razor将在服务器端解析并替换为相关输出。因此,在我看来,它是完全无动于衷的,如果你把它放在Javascript或HTML中 - 在客户端只有输出值可见。因此,在上面的例子中,我会选择第一个选项(直接将它放在JS中),因为你没有其他不必要的隐藏输入字段。
答案 2 :(得分:1)
我认为这个问题没有正确答案;唯一的利弊。
在Javascript中使用Razor的优点
缺点