Попытка выяснить, как MVC получает индекс массива в частичном представлении.
У меня есть следующий код для демонстрации.
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" },
}
}
});
}
}
Мое представление Index.aspx
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<%: Html.EditorForModel("_Customer") %>
</asp:Content>
My _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" />
<% } %>
My Order.ascx
<%= Html.LabelFor(m => m.Name) %>
<%= Html.EditorFor(m => m.Name) %>
Следующий HTML-код отображается
<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>
Где выполняется Order.ascx получить доступ к индексу массива от его родителя?Я хочу иметь возможность установить индекс вручную для одного вызова ajax, чтобы я мог подделать значение приращения.