如何通过ajax调用发送模型数据

时间:2017-01-23 19:40:48

标签: jquery asp.net ajax asp.net-mvc-5

在我的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的值。 enter image description here

修改

好的我做了下面的事情

var e = "@Model.Temp";

我是初学者我不确定这是不是正确的方法。请指导我。

2 个答案:

答案 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";