将变量转换为Javascript
我试图使用Razor从模型变量设置JavaScript变量,但无法找出错误所在。 在CSHTML页面中,我尝试了以下方法:将变量转换为Javascript,javascript,asp.net,razor,Javascript,Asp.net,Razor,我试图使用Razor从模型变量设置JavaScript变量,但无法找出错误所在。 在CSHTML页面中,我尝试了以下方法: <script> var test1 = @Model.testVariable; var test2 = @(Model.testVariable); var test3 = <text>@Model.testVariable</text> var test4 = @Html.Raw(Model.testVari
<script>
var test1 = @Model.testVariable;
var test2 = @(Model.testVariable);
var test3 = <text>@Model.testVariable</text>
var test4 = @Html.Raw(Model.testVariable);
</script>
在控制器中,我设置变量如下:
model.testVariable = "x";
然后当我访问变量时,我几乎总是得到错误test1是未定义的
。如果我将变量设置为var test1='x'
,那么它可以正常工作。只有当我从模型中获取变量时,它才会出现问题
$(document).ready(function () {
alert(test1);
}
如果需要将变量设置为字符串文字,则需要将其括在引号中。例如:
<script>
var test1 = '@Model.testVariable';
</script>
var test1='@Model.testVariable';
是,因为否则JavaScript会将该值解释为变量,并尝试使用与@Model.testVariable
的值相等的标识符访问该变量,而该值(在大多数情况下)将是未定义的。@mhodges或语法错误,如果字符串包含空格或任何其他可以解释为代码的内容,这实际上相当危险。
<script>
var test1 = '@Model.testVariable';
</script>