2010-09-23 59 views
2

我已經看到很多示例(NerdDinner,Sanderson的體育商店等),其中一個視圖綁定到一組對象。視圖中的語法通常是這樣的......ASP.NET MVC - 使用IEnumerable模型插入或更新視圖

<%@ Page... Inherits="System.Web.Mvc.ViewPage<IEnumerable<MyViewModel>>" %> 
... 
<% foreach (var myViewModel in Model) { %> 

我也看到了大量的插入或更新,其中控制器自動綁定模型參數,在視圖中的表單元素的例子。

我正在尋找兩種技術的組合,其中我的視圖具有與myViewModel集合有關的表單元素,其中每個myViewModel都有3-4個屬性。目的是允許用戶在一次採集中輸入一組這些數據。

假設這是可能的,任何人都可以幫助我的語法?我無法弄清楚如何標記表單元素以使綁定工作。

+0

+1取消downvote .. – Ahmad 2010-09-24 06:17:03

回答

5

這可能是通過內置的模型綁定,但是你必須對錶單對象進行一些基於約定的命名。首先,你的行動需要採取一個集合:

[HttpPost] 
public ActionResult CreateFoos(List<Foo> foos) 
{ 
    // I have a list of the foo objects that were posted 
} 

,然後在視圖中,假設你想爲每個對象的一種形式:

<% for (int i = 0; i < Model.Count; i++) { %> 
    <%: Html.TextBoxFor(x => x[i].Property1) %> 
    <%: Html.TextBoxFor(x => x[i].Property2) %> 
    <%: Html.TextBoxFor(x => x[i].Property3) %> 
<% } %> 

,請注意控制如何呈現在HTML中,因爲在你的「創建」視圖中,你可能想要一個允許用戶添加另一條記錄的JavaScript按鈕,並且你必須增加每個附加控件的索引。這並不難,但我只是想警告你注意它實際產生的來源。