2017-01-23 57 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";