比如Model是这样的
public class Model{
  public int Id{get;set;}
  public string Name{get;set;}
  public IList<Role> Roles{get;set;}
}其中Role对象为
public class Role{
  public int Id{get;set;}
  public string Name{get;set;}
}比如View中有3个Role的checkbox 那么checkbox的name属性要写成怎么样子才能自动给Model中的Roles赋值(我只要赋Role的Id就行了)mvc

解决方案 »

  1.   

    var m = new Model() { Id = xxx, Name = xxx };
    m.Roles = new List<Role>() { new Role() { Id = xxx, Name = xxx } };
      

  2.   

    Model m = new Model();
    List<Role> list=new List<Role>();然后分解动作
    foreach (var item in checkbox)
    {
        Role R=new Role();
        R.id=this.CheckBox.value;
        R.name=this.CheckBox.Text;
        list.Add(R);
    }m.Roles=list;
      

  3.   

    不是很明白版主的意思。
    可能是我没描述清楚
    比如有一个Action叫UserEdit
    public ActionResult UserEdit(Model model){//Model类型作为参数传递到Action
     string modelName = model.Name;//这里可以根据view中name是"Name"的input中value得到值
     string roleId = model.Role.Id;//这个要怎么得到View传递过来的值??
    }
      

  4.   

    不好意思,看错了。MVC不能支持复杂模型的绑定。但是你可以扩展一个自己的模型绑定,参考:http://lostechies.com/jimmybogard/2009/03/18/a-better-model-binder/
      

  5.   

    谢谢版主,收藏了,有时间研究下。我想如果自己写个扩展,当name="Role.Id"出现这种带点的自动去赋值对象属性,这样就方便了。现在就只能手动赋值了