Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 部分视图如何访问位于调用方法中的数组的索引?_Asp.net Mvc_Asp.net Mvc 2 - Fatal编程技术网

Asp.net mvc 部分视图如何访问位于调用方法中的数组的索引?

Asp.net mvc 部分视图如何访问位于调用方法中的数组的索引?,asp.net-mvc,asp.net-mvc-2,Asp.net Mvc,Asp.net Mvc 2,试图找出MVC如何在局部视图中获取数组的索引 我有以下代码要演示 public class HomeController : Controller { public ActionResult Index() { return View(new[] { new Customer() { Orders = new [] { new O

试图找出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>

我的客户.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" />
 <% } %>

m[i].订单[i2],“订单”)%>
我的订单.ascx

<%= Html.LabelFor(m => m.Name) %>
<%= Html.EditorFor(m => m.Name) %>
m.Name)%%>
m、 名称)%%>
呈现以下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调用手动设置索引,以便伪造增量值。

似乎Html.EditorFor()方法使用反射来获取执行它们的上下文,以获取当前循环的索引

答案是在TemplateInfo中设置HtmlFieldPrefix,以便您的局部视图可以访问它

ViewData.TemplateInfo.HtmlFieldPrefix=“[0]_Orders[1]”;%%>

显然,您应该用当前for循环或计数器变量的值替换这些数字