如何在POST上阅读复杂的视图模型?

时间:2010-06-05 20:33:56

标签: asp.net postback

我有一个具有以下属性的用户视图模型:

 public User user;
    public List<Language> Languages;

我将上面的模型发送到视图并使用html帮助器来构建表单,所以我最终得到了类似的东西:

<form action="/Users/Edit/5" method="post"><input id="user_UserId" name="user.UserId" type="hidden" value="5" />

    名字     
    

        姓     
                 电子邮件

<br />
<input id="user_Email" name="user.Email" type="text" value="test@gmail.com" />

        语言     
     - 烯

烯                       

现在,我尝试在最初类似的内容中阅读POST:

[AcceptVerbs( HttpVerbs.Post )]

public ActionResult Edit(int UserId,FormCollection form){

并且无法获取user.UserId变量,user.FirstName变量等。

知道需要做些什么才能阅读这种POST请求。我有点不愿意修改我的ViewModel,因为它很简单,易于维护。

谢谢。

2 个答案:

答案 0 :(得分:2)

前段时间我遇到过类似的问题。这篇文章很有帮助: Editing a variable length list

答案 1 :(得分:0)

显然,简单的答案是使用前缀,例如:

public ActionResult Edit([Bind(Prefix="user")] int UserId, FormCollection form ) { }

但是,我还是得到了

  

参数字典包含一个   参数'UserId'的null条目   非可空类型'System.Int32'   方法'System.Web.Mvc.ActionResult   编辑(的Int32,   System.Web.Mvc.FormCollection)'

知道如何解决这个问题吗?