2016-10-29 4 views
1

私はビューのページにこのコードを記述し、その目的のためにasp.net mvcajaxとコントローラを呼び出したい:
ajax asp.net mvcでコールすると、なぜコントローラでnullになるのですか?

$("#dbbutton").click(function (e) { 

      //Save DB NAME 
      var serviceURL = '/DDRS/SaveDBName'; 
      $.ajax({ 
       type: "POST", 
       url: serviceURL, 
       data: JSON.stringify({ value:$("#DBName").val() }), 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       success: successFunc, 
       error: errorFunc 
      }); 
      function successFunc(data, status) { 
       alert(data); 
      } 
      function errorFunc() { 
       alert('error'); 
      } 


と、これはDDRSコントローラの私のアクションメソッドです:

[HttpPost] 
     public ActionResult SaveDBName(string DataBaseName) 
     { 
      string test = DataBaseName.Trim(); 
      string sep = test.Substring(0, test.IndexOf(",")); 

      return Json(test, JsonRequestBehavior.AllowGet); 
     } 


この行のSaveDBNameにnullエラーが表示される:

string test = DataBaseName.Trim(); 


どうすれば問題を解決できますか?ありがとうございます。

+1

ajaxコールの{DataBaseName:$( "#DBName")。val()}のデータを次のように変更してください: –

答えて

0

ASP.Net MVCが期待する形式でデータを送信していないため、この問題が発生します。 ASP.Net MVCは、stringや値型(int、boolなど)のような値をPOSTメソッドでパラメータとして直接使用する場合には、特別な形式が必要です。

お使いのコントローラがprimtiiveタイプを使用しますが、あなただけの

data: JSON.stringify({ value:$("#DBName").val() }) 

valueを送信していることは、それはあなたのDataBaseNameパラメータにバインドしないであろう、あなたのパラメータの名前ではありません。 valueを正しいパラメータ名に置き換えても、動作しません。それはあなたがあなたのjQueryのAJAXリクエストのデータとして以下のコードを使用する必要があります動作させるために

:プロパティ名は

この形式でデータを送信するためのjQueryを教えてくれますように空であることを

data: { "": $("#DBName").val() } 

お知らせ

='MyDatabaseNameWillGoHere' 

この形式では、ASP.Net MVCがパラメータに正しくバインドできます。

この問題を防ぐには、常にViewModelを使用します。

+0

'data:JSON.stringify({DataBaseName:$("#DBName ")。 ()})、 'うまく動作します:) –

関連する問題