繁体   English   中英

如何使用Mvc3 asp.net中的Ajax Jquery从视图向控制器发送List <>模型?

[英]How can send List<> Model From View To Controller using Ajax Jquery in Mvc3 asp.net?

如何发送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" })%>

这是一个模型绑定列表,在这种情况下,您必须在html input标签的name属性中使用与参数相同的名称来发送信息,而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

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

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
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM