2016-03-07 70 views
0

在我的視圖中,我需要多個輸入框來表示動態數量的值。例如,如果我有一個動態數量的輸入框(此處顯示爲http://jsfiddle.net/skip405/9sX6X/6/)。我如何將所有這些值傳遞給我的控制器?在asp.net中通過POST傳遞動態列表c#

目前,我有我的觀點一個輸入框,設置像這樣:

<div class="col-md-10"> 
    @Html.TextBoxFor(m => m.StudentName, new { @class = "form-control", @id = "current", @name = "content" }) 
</div> 

我的模型StudentName的定義是這樣的:

[Required] 
[Display(Name = "Student name")] 
public string StudentName { get; set; } 

我首先想到的是設置在模型中創建一個數組並將每個數據項存儲在其中,儘管我沒有ASP.NET或C#中的專業知識來完成此任務。

在此先感謝!

+0

不知道你的問題在這裏,你也可以添加asp.net-mvc標籤,因爲它看起來像使用ASP.NET MVC。 – CodingGorilla

+0

如果你想動態地添加收集項目,請參考答案[這裏](http://stackoverflow.com/questions/29161481/post-a-form-array-without-successful/29161796#29161796)和[這裏]( http://stackoverflow.com/questions/29837547/set-class-validation-for-dynamic-textbox-in-a-table/29838689#29838689)的一些例子。在使用'HtmlHelper'方法時,不要嘗試設置'name'屬性(不是它的工作方式),而是使用'new {id =「」}'去除'id'屬性,否則你將會重複'id '屬性(這是無效的HTML) –

回答

2

將數據從請求轉換爲控制器中的動作輸入參數的過程稱爲模型綁定。這裏實現了很多靈活性,參見Model Binding To A List

其基本思想是如果您有幾個同名的輸入,它們可以綁定到一個List<string>

更復雜的情況是可能的:如果你有一個像

public class Person 
{ 
    public int Age{get; set;} 
    public string Name{get; set;} 
} 

和操作方法:

public ActionResult DoSomething(List<Person> people) 
{ 
    //do something 
} 

的輸入字段可以是這樣的:

<input type="number" name="[0].Age" /> 
<input type="number" name="[0].Name" /> 
<input type="number" name="[1].Age" /> 
<input type="number" name="[1].Name" /> 
+1

幾乎只有一個鏈接的答案,我認爲這應該是一個評論。 – spender

+1

你說得對,我添加了一些細節。 – Alireza

+0

這似乎是最好的解決方案,但我需要找到一種命名新輸入框以適應列表索引的有效方法。 –