2017-05-04 36 views
0

我正在研究asp.net mvc web應用程序。我有一個用於註冊用戶信息的表單。保存操作寫在按鈕點擊上。我試圖將多個模型傳遞給控制器​​。但在控制器它變得空。我該如何解決這個問題..我嘗試了一些解決方案。阿賈克斯後動作調用傳遞多個模型到控制器

這裏是我的榜樣 - 請您檢查:

我有一個父模型:

public class ParentUsers 
    { 
     public Login loginModel { get; set; } 
     public Details registerModel { get; set; } 
    } 

jQuery函數

$("#registerLE").click(function() {   
      var form = $("#registration"); 
      var validatable = form.kendoValidator().data("kendoValidator"); 

      debugger 
      if (validatable.validate()==true) {     
       var parentModel = { 
        loginModel :{ 
         Username: $('input[name=uname]').val(), 
         Password: $('input[name=password]').val(), 
         Role: 'LE'      
        }, 

       registerModel: { 
        name: $('input[name=firstname]').val(), 
        userId:1 
        } 

       } 

       $.ajax({ 
        type: "POST", 
        url: "/Home/Register", 
        data: { "parentModel": parentModel }, 
        datatype: "json", 
        cache: false, 
        success: function (data) { 
         alert("You Multiple Data Passed Successfully"); 
        }, 
        error: function (xhr) { 
         alert('No Valid Data'); 
        } 
       }); 
      } 
     }); 

控制器的方法:

public ActionResult Register(ParentUsers parentModel) 
{ 
     //...after save..// 
     return View("Login"); 
} 

請幫助

+0

使用ajax.begin形式,它將是一個最簡單的方法來處理。 – TechVision

回答

0

你需要改變你的ajax的一點點。我已經測試你的代碼,其優良的工作我身邊

操作方法:

public ActionResult SubmitMethod(ParentUsers parentuser) 
    { 

     //do stuff here 

     return Json("" , JsonRequestBehavior.AllowGet); 
    } 

模態:

public class ParentUsers 
    { 
     public loginModel loginModel { get; set; } 
     public Details registerModel { get; set; } 
    } 

    public class loginModel { 

     public string Username { get; set; } 
     public string Password { get; set; } 
     public string Role { get; set; } 
    } 

    public class Details { 
     public string name { get; set; } 
     public int Id { get; set; } 

    } 

Ajax代碼:

<script src="~/Scripts/jquery-1.10.2.min.js"></script> 

<input type="button" id="btnPost" value="Gel Users" /> 

<script> 

    $(document).ready(function() { 

     $('#btnPost').click(function() { 
      alert('btnPost'); 

      var loginModelObj = { 

       Username:"UsernameValue", 
       Password:"PasswordValue", 
       Role:"RoleValue", 
      }; 

      var registerModelObj = { 
       name:"nameValue", 
       Id:1 

      }; 

      var SendObject = { 

       loginModel: loginModelObj, //loginModel same name as in Modal 
       registerModel: registerModelObj, //registerModel same name as in Modal 
      } 


      $.ajax({ 
       method: 'POST', 
       url: '/Test/SubmitMethod', 
       contentType: 'application/json', // send data type to server 
       dataType: 'json', //return type of data from server 
       data:JSON.stringify(SendObject), 
       // asyn: false, 
       success: function (data, status, xhr) { 

        // do stuff here 

       }, 
       error: function (response, status, xhr) { 

        alert(response.statusText); 

       } 
      }) 
     }) 
    }) 
</script> 
+0

非常感謝!有效 !你救了我;)(y) – bepositive

+0

很高興,它幫助你:) –