Asp.net mvc 4 MVC型号活页夹列表Id和名称问题

Asp.net mvc 4 MVC型号活页夹列表Id和名称问题,asp.net-mvc-4,modelbinder,Asp.net Mvc 4,Modelbinder,嗨,当我使用ajax调用获取部分视图时,我在获取正确的ID和名称方面遇到了问题 我想要像“块\u 0\u项目\u 0\u Id”这样的Id。这些是使用for循环渲染的,因此 主页: @for (int blockIndex = 0; blockIndex < Model.Block.Count(); blockIndex++) { @Html.EditorFor(model => Model.Blocks[blockIndex], "BlockVie

嗨,当我使用ajax调用获取部分视图时,我在获取正确的ID和名称方面遇到了问题

我想要像“块\u 0\u项目\u 0\u Id”这样的Id。这些是使用for循环渲染的,因此 主页:

@for (int blockIndex = 0; blockIndex < Model.Block.Count(); blockIndex++) {

                @Html.EditorFor(model => Model.Blocks[blockIndex], "BlockView")
            }
(int blockIndex=0;blockIndexmodel.Blocks[blockIndex],“BlockView”) } 然后,BlockView使用和editorfor对项目执行相同的列表呈现。 for循环使id和名称正确

但是,如果我想将项目模板渲染为局部视图,那么我将得到的所有内容自然都没有块和项目部分

为了解决这个问题,我调用一个空的主页,它呈现一个块,其中总是有一个项目。但这意味着,无论我想通过ajax插入什么,并且可以通过modelbinder读取,我都必须创建两个额外的局部视图

解决方案2我认为是使用 ViewData.TemplateInfo.HtmlFieldPrefix方法并设置它。但是,因为我有一个列表和一个列表,这是不可能的。我可以去掉其中一个partialView并使用: ViewData.TemplateInfo.HtmlFieldPrefix=“块”

我看到一个mvc 1和2 Html助手,名为: BeginCollectionItem(“nameofitem”),但它已不存在

有什么好主意吗?

尝试使用@Html.TextBox()而不是@Html.EditorFor()

通过@Html.TextBox,您可以向其传递名称和值

@TextBox(“WhateverNameYouWant”,Model.Blocks[blockIndex])