2017-01-24 15 views
1

MVCでActionに多くの値を渡そうとしますが、ユーザは常にnullです。フォームデータをAjax経由でアクションに渡す

var form = $('form'); 
    $.ajax({ 
     type: "POST", 
     url: '@Url.Content("~/User/UpdateUser")', 
     data: { user: form.serialize(), NameOfCare: care }, 
     success: function (result) { 
      if (result == "Ok") { 
       document.location.href = '@Url.Content("~/User/Index")'; 
      } 
     } 
    }); 

Ajaxで値が多いフォームを渡すにはどうすればよいですか?

+2

使用を使用して、あなたのデータとfilledになります。さらに、アクションメソッドコードをここに配置します。 – Ankita

+0

'.param()'メソッドを使ってデータを追加することができます - [この回答](http://stackoverflow.com/questions/32353093/mvc-jquery-ajax-post-returns-null/32353268#32353268)を参照してください。 )。 @Url.Action(...) '' –

答えて

0

シリアル化されたオブジェクトを実際には文字列で送信しています。以下の例を試してください。アクションは文字列を自動的にデシリアライズします。

 function load() { 
     var dataT = $("#searchform").serialize(); 
     var urlx = "@Url.Action("SR15Fetch", "SR15", new { area = "SALES" })"; 
     debugger; 
     $.ajax({ 
      type: "GET", 
      url: urlx,  
      data: dataT, 
      cache: false, 
      success: HandellerOnSuccess, 
      error: HandellerOnFailer, 
      beforeSend: Ajax_beforeSend(), 
      complete: Ajax_Complete(), 
     }); 
    } 
+0

この問題は、追加された名前と値のペア( 'NameOfCare:care')をシリアル化されたオブジェクトに追加することです。これはそれにはまったく言及していません。 –

1

まず第一に、あなたはdataを処理するためにcontrollerにごformデータを送信しなければならないので代わりに@Url.Content@Url.Actionを使用する必要があります。

.serializeメソッドは、送信用の文字列としてフォーム要素のセットをエンコードします。

data:form.serialize() + "&NameOfCare="+careを使用してください。すべきは、このようになります

server-sideであなたの方法:

public ActionResult(UserViewModel user,string NameOfCare){ 

} 

userオブジェクトがUpdateUserがあなたのアクションメソッドである場合Url.Action @Model Binding

関連する問題