2013-06-03 51 views
1

如何發送List<int>角色模型?例如從視圖到控制器。
在Mvc3 asp.net中使用Ajax Jquery不是剃鬚刀。
我使用這個代碼如何發送列表<>模型從視圖到控制器使用Ajax JQuery在Mvc3 asp.net?

var url = '<%:Url.Action("Roles","RolesManager") %>'; 
$.ajax({ 
    url: url, 
    type: 'post', 
    dataType: "json", 
    traditional: true, 
    data: $('#EditUserForm').serialize(), 
    success: function() { 
     $('#EditUserForm').submit(); 
    }, 
    error: function() { 
    } 
}); 

但是當我調試控制器List<int> Roles = null

頁模式像

<%: Html.ListBoxFor(m => m.UserRoles, new MultiSelectList(Model.UserRoles, "UserRoleId", "UserRoleName"), new { @id = "UserRoles", @class = "ddlUserRolesCls" })%> 
+0

您使用的是編輯器模板嗎?你的觀點看起來如何? – Shyju

+0

你是否正確設置了你的參數? –

回答

0

這是一個模型綁定列表,在這種情況下,你必須發送HTML格式輸入標籤和asp.net的name屬性使用參數的相同名稱的信息模型聯編程序會將其轉換爲帖子上的一個集合。你的javascript看起來很好。嘗試是這樣的:

在視圖:

public ActionResult Post(List<int> roles) 
{ 
    // process 
} 

也來看看這篇文章:

<input type="text" name="roles" value="1" /> 
<input type="text" name="roles" value="4" /> 
<input type="text" name="roles" value="2" /> 
<input type="text" name="roles" value="8" /> 
控制器

http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx

0

更改您的視圖模型是這樣。請注意,我們有一個SelectedUserRolesint array類型的屬性。

public class EditUserRole 
{ 
    public List<SelectListItem> UserRoles{ get; set; } 
    public int[] SelectedUserRoles { set; get; } 
    //Also other relevant properties here 
} 

而在我的獲取動作,填補了UserRoles財產

public ActionResult EditUser(int id) 
{ 
    var vm=new EditUserRole(); 
    vm.UserRoles=GetUserRoles(); 
} 
public List<SelectListItem> GetUserRoles() 
{ 
    var roles= new List<SelectListItem>(); 
    // the below is hardcoded. Get it from DB And fill it here 
    roles.Add(new SelectListItem { Value="1",Text="Admin" }); 
    roles.Add(new SelectListItem { Value = "2", Text = "Editor" }); 
    return roles; 
} 

,並在你看來這是強類型到EditUserRole

@Html.ListBoxFor(m => m.SelectedUserRoles, 
       new MultiSelectList(Model.UserRoles, "Value", "Text"), 
          new { @id = "UserRoles", @class = "ddlUserRolesCls" }) 

在您發佈的形式,你會獲取已發佈模型的SelectedUserRoles屬性中的選定角色ID。

[HttpPost] 
public ActionResult Edit(EditUserRole model) 
{ 
    // check model.SelectedUserRoles 
    // to do : Save and redirect 
} 
+0

我需要列表中的所有項目未選中 –

+0

我從列表中選擇角色並將選定的角色添加到另一個 –

+0

爲什麼您需要所有項目?您可以像使用GET操作一樣獲取POST操作。 – Shyju

相關問題