Versuchen herauszufinden, wie MVC den Index eines Arrays in einer Teilansicht erhält.Wie greifen Teilansichten auf den Index eines Arrays in der aufrufenden Methode zu?
Ich habe den folgenden Code zu demonstrieren.
public class HomeController : Controller {
public ActionResult Index() {
return View(new[] {
new Customer() {
Orders = new [] {
new Order() { Name="Shoes" },
new Order() { Name="Socks" },
}
},
new Customer() {
Orders = new [] {
new Order() { Name="Pants" },
new Order() { Name="Pantaloonies" },
}
}
});
}
}
Meine Index.aspx Ansicht
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<%: Html.EditorForModel("_Customer") %>
</asp:Content>
Mein _Customer.ascx
<% using(Html.BeginForm("Index", "Home", FormMethod.Post)) { %>
<% for (int i = 0; i < Model.Length; i++) { %>
<% for (int i2 = 0; i2 < Model[i].Orders.Count(); i2++) { %>
<%= Html.EditorFor(m => m[i].Orders[i2], "Orders")%>
<% } %>
<% } %>
<input type="submit" value="submit" />
<% } %>
Mein Order.ascx
<%= Html.LabelFor(m => m.Name) %>
<%= Html.EditorFor(m => m.Name) %>
Die folgende HTML wird
gemacht<form action="/" method="post">
<label for="[0]_Orders[0]_Name">Name</label>
<input class="text-box single-line" name="[0].Orders[0].Name" type="text" value="Shoes" />
<label for="[0]_Orders[1]_Name">Name</label>
<input class="text-box single-line" name="[0].Orders[1].Name" type="text" value="Socks" />
<label for="[1]_Orders[0]_Name">Name</label>
<input class="text-box single-line" name="[1].Orders[0].Name" type="text" value="Pants" />
<label for="[1]_Orders[1]_Name">Name</label>
<input class="text-box single-line" name="[1].Orders[1].Name" type="text" value="Pantaloonies" /><input type="submit" value="submit" />
</form>
Woher erhält Order.ascx Zugriff auf den Index des Arrays von seiner Eltern? Ich möchte in der Lage sein, den Index manuell für One-Off-Ajax-Anrufe festzulegen, so dass ich den Inkrementwert fälschen kann.