使用razor内联设置javascript变量,这是好的做法/安全吗?

ant*_*liu 4 c# asp.net asp.net-mvc-3

如果我想从我的模型中设置一些javascript变量那么这是一种安全的做法吗?例如:

<script type="text/javascript">
    var myVariable = '@Model.myVar';
</script>
Run Code Online (Sandbox Code Playgroud)

这是一个好的做法吗?我不能想到一个更好的方法来真正做到这一点,除了可能做隐藏的输入,但这似乎是太多的工作相比.我只是不知道这是否容易受到影响,或者有什么东西可以忽略这样做.

and*_*eer 5

我认为这有几个问题.从根本上说,您将javascript与页面或视图紧密结合在一起.我认为自己是一个可靠的.NET/C#/ MVC开发人员,但是javascript的初学者,这正是我最近追求的设计类型.在过去,我会在我的观点中插入各种javascript并大量使用Razor.最终它可以工作,但它会导致标记和脚本的紧密耦合,最终会产生难以维护的环境.

更好的方法是改为对javascript函数进行内联调用.差异是微妙的,但它将强制分离这两个领域.

<script type="text/javascript">
    MyFunction('@Model.myVar');
</script>
Run Code Online (Sandbox Code Playgroud)

您还可以通过Razor在隐藏的输入字段,跨度等中嵌入值,并将它们暴露给您的javascript.