2017-01-23 113 views
0

在我的ASP.Net MVC 5项目中,我有一个cshtml文件,它有一个视图模型。现在在视图模型中,我有一个名为Temp的字符串变量,我需要传递给ajax调用。如何通过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"; 

我是初学者,我不知道这是正确的做法一些事情。请引导我。

回答

1

那么,在技术上,所有你需要做的是用引号括起来,以便一旦它是由刀片服务器端渲染,它不会创建一个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 --> 
+0

谢谢你这么多命名空间的答案。这真的很有帮助。今天我学到了一些有趣的新东西。 :) – Unbreakable

1

它看起来像你需要周围的变量报价在剃刀:

var e = "@Model.Temp";