如何绑定对象列表将其传递给控制器​​?

时间:2015-01-02 09:00:27

标签: asp.net-mvc knockout.js

我创建了一个显示用户列表的表单。单击列表中的项目时,必须将所属属性传递给控制器​​。为此,我添加了以下ActionLink:

@Html.ActionLink(@item.Username.ToString(), "UserEdit", "Admin", new DemoRes.Models.User{ UserId = item.UserId, Email= item.Email, Username=item.Username, Password=item.Password, IsActive=item.IsActive, Ownership=item.Ownership}, null)

我已经检查过数据是否正确地传递给了查看,看起来没问题:

item.Ownership
Count = 1

    [0]: 18878
item.Ownership.GetType()
{Name = "List`1" FullName = "System.Collections.Generic.List`1[[System.Int64, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]"}

然后,当对象传递给控制器​​中的以下UserEdit方法时,所有属性都设置正确但所有权列表为空:

public ActionResult UserEdit(DemoRes.Models.User user)
    {
        //here user.Ownership is empty
    }

这是用户类:

public class User
{
    public User()
    {

    }

    [BsonId(IdGenerator = typeof(CombGuidGenerator))]
    public Guid UserId { get; set; }

    [BsonElement("Username")]
    public string Username { get; set; }

    [BsonElement("Password")]
    public string Password { get; set; }

    [BsonElement("Role")]
    public int Role { get; set; }

    [BsonElement("Email")]
    public string Email { get; set; }
    [BsonElement("FirstName")]
    public string FirstName { get; set; }
    [BsonElement("LastName")]
    public string LastName { get; set; }
    [BsonElement("AuthLevel")]
    public int AuthLevel { get; set; }
    [BsonElement("RememberMe")]
    public bool RememberMe { get; set; }
    [BsonElement("IsActive")]
    public bool IsActive { get; set; }
    [BsonElement("Note")]
    public string Note { get; set; }
    [BsonElement("Ownership")]
    public List<long> Ownership { get; set; }
}

有没有人知道正确绑定所有类属性(基元和复杂类型,如列表)的正确方法是什么,以便将它们从视图传递回控制器?

1 个答案:

答案 0 :(得分:1)

您无法通过单个查询字符串Ownership=item.Ownership发布整个模型。通过Form将整个模型发布到操作中。