在我的ASP.Net MVC 5项目中,我有一个cshtml文件,它有一个视图模型。现在在视图模型中,我有一个名为Temp
的字符串变量,我需要传递给ajax调用。
<script>
$( document ).ready(function() {
$( "#Hello" ).blur(function() {
var x = $('#Site').val();
var e = @Model.Temp; // Here I get the value in developer tool but it says "Uncaught Reference Error type: undefined"
$.ajax({
type: 'POST',
url: '/Settings/CheckPrefix',
data: { Prefix: x , Site: e },
success: function (data) {
},
error: function () {
}
});
});
});
</script>
如何在脚本中捕获Temp变量并将其发送到ajax调用。我可以在开发人员工具中看到TEMP
的值。
修改
好的我做了下面的事情
var e = "@Model.Temp";
我是初学者我不确定这是不是正确的方法。请指导我。
答案 0 :(得分:1)
从技术上讲,你需要做的就是用引号括起来,这样一旦它被Razor服务器端呈现,它就不会在客户端创建JS语法错误:
var e = '@Model.Temp';
现在的方式,变量的内容直接转储到JS代码中。例如,如果Model.Temp
是"foo"
,那么渲染的JS代码将如下所示:
var e = foo;
然后,因为foo
未在JS中定义为变量,所以会出现语法错误。然而,有了引号,你会得到:
var e = 'foo';
使它只是一个JS字符串,非常好。
但是,这不是很强大,需要您将脚本保留在视图中。最好创建一个命名空间的JavaScript变量,然后在JS代码中使用它:
<script>
var MyNamespace = MyNamespace || {};
MyNamespace.MyVariable = '@Model.Temp';
</script>
<!-- other JS code, preferably loaded externally rather than inline -->
答案 1 :(得分:1)
看起来你需要在Razor中变量的引号:
var e = "@Model.Temp";