2010-06-05 64 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