2010-04-12 102 views
4

我正在創建一個asp.net MVC應用程序,我想在其中提供一個動態添加控件的功能。我有一個表單,其中有兩個用於單名控制的名字和姓氏的文本框。現在用戶可以添加任意數量的這組控件。我可以使用Java腳本在頁面上添加這些控件。但是我不知道如何在用戶提交時訪問這些控件的值。在asp.net中按鈕點擊動態添加控件mvc

請這方面的幫助或建議另一種方法

感謝

回答

2

有史蒂夫·桑德森文章Editing a variable length list, ASP.NET MVC 2-style的讀取。它向你展示瞭如何以乾淨的MVC風格來做你正在尋找的東西。

+0

是否有任何更新,更有效的解決方案,給定已經4年了? – 2016-07-01 13:20:52

2

看看使用jQuery的AJAX調用的提交操作。

你可以通過你的控件進行交互(使用jquery類選擇器和$ .each很容易)並將變量推入一個js變量。 將其解析爲JSON並使用ajax調用將數據傳遞迴控制器。

1

如果您來自webforms透視圖,則習慣於在代碼隱藏中以編程方式添加這些新控件。使用ASP.NET MVC,你最好用javascript來做這件事。

編寫一個添加FirstName1,FirstName2,FirstName3等的javascript函數應該是微不足道的。在控制器中,檢查Request.Form.AllKeys以確定用戶添加了多少個字段。

你也可以在迭代稱爲「txtNumFields」的隱藏字段數量,然後使用該作爲循環在你的控制值:

int numFields = int.Parse(Request.Form["txtNumFields"]); 
for (i==0;i<numFields ;i++) 
{ 
    string firstName = Request.Form["FirstName" + i.ToString()]; 
    ... 
} 
+0

謝謝戴夫,我試過這種方法,但Request.Form.AllKeys總是0.它不顯示任何控件,我使用JavaScript添加。任何幫助? – 2010-04-12 12:57:27

+0

這是問題,因爲Request.Form.AllKeys.Count始終是0.所以我無法訪問我的控制器中的任何項目。 – 2010-04-12 13:06:24

+0

你是否在每個表單域上設置一個ID?您還需要確保該按鈕的類型= submit,並且Action需要能夠接受POST(使用[HttpPost]裝飾Action方法 – 2010-04-12 13:11:48