2017-01-23 11 views
0

私のASP.Net MVC 5プロジェクトでは、私はcshtmlファイルを持っており、それは1つのビューモデルを持っています。ビューモデルでは、私はajax呼び出しに渡す必要がある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

EDIT

[OK]を、私は

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"; 
関連する問題