2010-06-05 54 views
1

我有一个具有以下属性的用户视图模式:如何在POST上阅读复杂的视图模型?

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="[email protected]" /> 

语言
- 恩

连接

现在,我尝试阅读后的东西,最初是这样的:

[AcceptVerbs(HttpVerbs.Post)] 

公众的ActionResult编辑(INT用户ID,形式的FormCollection){

,并不能得到user.UserId变量,user.FirstName变量等

任何想法需要做什么才能够阅读这种POST请求。我有点不情愿修改我的ViewModel,因为它非常简单,易于维护。

谢谢。

回答

0

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

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

但是,我仍然得到

参数字典有我 参数'UserId'的空条目 非空类型'System.Int32'为 方法'System.Web.Mvc.ActionResult 编辑(的Int32, System.Web.Mvc.FormCollection)”

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

2

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

+0

我似乎不明白如何将上述指定的帖子应用于我的特定情况。 我可以更改结果输入元素的名称吗?我正在使用UserId的HiddenFor帮助器。 – Interfector 2010-06-05 21:00:44

+0

注意“使用(Html。BeginCollectionItem(“礼物”),”关键是要围绕您的收藏与此辅助类。这是文章的最重要的部分。 – pvieira 2010-06-05 21:06:56