1

如何发送List<int>角色模型?例如从视图到控制器。
在 Mvc3 asp.net 中使用 Ajax Jquery 不是剃刀。
我正在使用此代码

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" })%>
4

2 回答 2

0

这是一个模型绑定列表,在这种情况下,您必须在namehtml 输入标签的属性中使用参数的相同名称发送信息,asp.net 模型绑定器会将其转换为帖子上的集合。你的 javascript 看起来不错。尝试这样的事情:

在视图中:

<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" />

在控制器中:

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

也看看这篇文章: http ://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx

于 2013-06-03T15:19:07.050 回答
0

像这样更改您的视图模型。请注意,我们有一个int arraySelectedUserRoles类型的属性。

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

在我的 Get Action 中,填写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
}
于 2013-06-03T15:29:48.700 回答