मैं निम्नलिखित मॉडल कहते हैं:ASP.NET MVC 4 - पाश पदों मॉडल संग्रह गुण लेकिन foreach के लिए नहीं है
@model Town
@using(Html.BeginForm())
{
<table>
@foreach(var person in Model.People)
{
<tr>
<td>@Html.TextBoxFor(m => person.Name)</td>
<td>@Html.TextBoxFor(m => person.Age)</td>
</tr>
}
<table>
<input type="submit" />
}
: फिर
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
public class Town
{
public string Name { get; set; }
public IEnumerable<Person> People { get; set; }
}
, मेरे उस्तरा ध्यान में रखते हुए, मैं इस राशि
[HttpPost]
public ActionResult Index(Town theTown)
{
//....
}
जब मैं पोस्ट, IEnumerable<Person>
नहीं आती है:
फिर, मैं, कुछ इस तरह पोस्ट के लिए एक कार्य है भर में। अगर मैं फ़िडलर में इसे देख, संग्रह केवल एक बार पोस्ट, और संग्रह की गणना नहीं करता है, तो मैं मिलता है:
People.Name = "whatever"
People.Age = 99
हालांकि, अगर मैं एक IList
के लोग बदल सकते हैं और एक के बजाय पाश के लिए एक का उपयोग foreach ...
@for(var i = 0;i < Model.People.Count;i++)
{
<tr>
<td>@Html.TextBoxFor(m => Model.People[i].Name)</td>
<td>@Html.TextBoxFor(m => Model.People[i].Age)</td>
</tr>
}
यह काम करता है। क्या मुझसे कुछ गलत हो रही है? मैं क्या खो रहा हूँ?
यह सामान्य व्यवहार है। मॉडल बाइंडर प्रस्तुत एचटीएमएल से इनपुट तत्वों की नाम संपत्ति का उपयोग करता है। इंडेक्सर के साथ लूप का उपयोग करना अद्वितीय नाम रखने का एकमात्र तरीका है कि मॉडल बाइंडर मॉडल –