2013-07-03 138 views
3

我是ASP.NET MVC的新手,需要一些幫助。我需要創建一個表單動態創建的表單。例如,假設我有一個名爲Person的模型。該人擁有姓氏和名字。在表單中,我想讓用戶輸入個人的名字和姓氏。我知道如何做到這一點,但我不知道如何做的是允許用戶添加多個人,並提交一個表單。ASP.NET MVC4動態表單生成

在初始加載頁面(視圖)時,默認顯示兩個空的文本框(用於名字和姓氏)。我還會有一個添加按鈕,允許用戶在窗體中添加另一行,併爲第二個人顯示相同的2個文本框。現在如果用戶提交它,它將有2個文本框用於名字,2個用於姓氏。

我不知道是否有辦法做到這一點,沒有後背。或者回復我唯一的選擇?

編輯:忘了提及我正在使用剃刀引擎。

感謝

+1

查看部分視圖,您需要創建一個可枚舉的模型和一個允許用戶添加另一個人的局部視圖。有很多關於SO和谷歌的信息可以幫助您使用代碼示例。 –

+0

@NicholasKing,如果你有方便的鏈接,我將不勝感激。同時我會做一些搜索... – JMS10

+1

看看這個。我發現它非常有用http://blog.stevensanderson.com/2010/01/28/editing-a-variable-length-list-aspnet-mvc-2-style/ –

回答

3

不需要多個POST。你希望你的表單發送個人到你的行動。該行動將是這樣

[HttpPost] 
public ActionResult AddPeople(Person[] people){ ... } 

爲了實現這一目標,就必須枚舉視圖輸入字段。他們必須進行索引,以0開始,並相應地增加,如:

@using(Html.BeginForm("AddPeople","TheController", FormMethod.Post)) 
{ 
    <input type="text" name="people[0].FirstName" /> 
    <input type="text" name="people[0].LastName" /> 
    ... 
    <input type="text" name="people[1].FirstName" /> 
    <input type="text" name="people[1].LastName" /> 
    ... 
    <input type="text" name="people[n].FirstName" /> 
    <input type="text" name="people[n].LastName" /> 
} 

您必須添加使用JavaScript的新領域,用一個簡單的DOM操作。只記得要保持索引有序。

1

菲爾哈克wrote an article在幾乎你想要做什麼。爲了讓它成爲動態的(意思是它們可以有1到很多人),你必須通過附加一個單擊事件到添加按鈕來複制一行新的輸入字段來做一些JavaScript操作。我首先建議先閱讀該文章,以瞭解如何構建輸入字段,以便在回發列表時填充。

3

史蒂文桑德森在他的博客中有一篇很好的文章......它不依賴於每個人的數字索引,以避免在中間刪除一個時出現「漏洞」。

見這裏的文章:http://blog.stevensanderson.com/2010/01/28/editing-a-variable-length-list-aspnet-mvc-2-style/

然後,你將需要驗證: http://blog.stevensanderson.com/2010/01/28/validating-a-variable-length-list-aspnet-mvc-2-style/

我使用MVC中的3和4的代碼...它就像一個魅力。