2014-02-06 20 views
1

我想從表單提交一個對象到我的mvc控制器。 這裏是JS:在mvc控制器中從jquery接收一個複雜的對象

<script> 
    function submitForm() { 
    var usersRoles = new Array; 
    jQuery("#dualSelectRoles2 option").each(function() { 
     usersRoles.push(jQuery(this).val()); 
    }); 
    var model = new Object(); 
    model.user = jQuery('#selectUser').val(); 
    model.roleslist = usersRoles; 
    console.log('model: ' + 'user: ' + model.user + 'roles: ' + model.roleslist); 
    console.log('JSON: ' + JSON.stringify(model)); 
    jQuery.ajax({ 
     type: "POST", 
     url: "@Url.Action(" 
     AddUser ")", 
     dataType: "json", 
     //data: { model: JSON.stringify(usersRoles) }, 
     data: { 
      model: JSON.stringify(model) 
     }, 
     success: function (data) { 
      alert(data); 
     }, 
     failure: function (errMsg) { 
      alert(errMsg); 
     } 
    }); 
} 

現在取人的必要信息,並建立對象「模型」,然後將其發佈到控制器。

這裏是我的視圖模型:

//for receiving from form 
public class submitUserRolesViewModel 
{ 
    public string userId { get; set; } 

    public List<String> rolesList { get; set; } 
} 

這裏是我的控制器:

//Post/ Roles/AddUser 
    [HttpPost]  
    public ActionResult AddUser(StrsubmitUserRolesViewModel model) 
    { 
     if (model != null) 
     {   

      return Json("Success"); 
     } 
     else 
     { 
      return Json("An Error Has occoured"); 
     } 
    } 

我怎樣才能得到一個JSON對象在控制器中?現在,當jquery執行一個帖子時,我的模型是空的。這意味着它沒有正確綁定。我確信這裏有一些小錯。

請問您能指出我哪裏出錯了。

回答

1
jQuery.ajax({ 
     type: "POST", 
     url: "@Url.Action("AddUser")", 
     contentType: "application/json", 
     data: JSON.stringify(model), 
     success: function (data) { alert(data); }, 
     error: function (errMsg) { 
      alert(errMsg); 
     } 
    }); 
+0

OMW模型綁定是驚人的! – Zapnologica

1

我稍微修改你jQuery和它工作正常現在 -

<script src="~/Scripts/jquery-1.10.2.min.js"></script> 
<script> 
    function submitForm() { 
     var roles = ["role1", "role2", "role3"]; 
     var rolesArray = jQuery.makeArray(roles); 

     var model = new Object(); 
     model.userId = 1; 
     model.rolesList = rolesArray; 

     jQuery.ajax({ 
      type: "POST", 
      url: "@Url.Action("AddUser")", 
      dataType: "json", 
      contentType: "application/json; charset=utf-8", 
      data: JSON.stringify(model), 
      success: function (data) { alert(data); }, 
      failure: function (errMsg) { 
       alert(errMsg); 
      } 
     }); 
    } 
</script> 

<input type="button" value="Click" onclick="submitForm()"/> 

輸出 -

enter image description here

相關問題