我有一个EditorTemplate的小项目。 我显示了一些最初在List<T>
中的项目,但我希望能够在用户按下按钮时添加项目 。ASP.Net MVC添加动态EditorFor元素
通常我添加的项目,以查看这样
@for (int i = 0; i < Model.Models.Count; i++)
{
@Html.EditorFor(model => model.Models[i], "_AddArticleFullQuantity");
}
当我想要添加项目动态我试图 创建一个使用AJAX调用服务器
<button id="addButton" type="button" class="btn btn-default btn-block" onclick="m_GUIRequests.AddArtikelToDiv()">add Article</button>
GUIRequests.prototype.AddArtikelToDiv = function()
{
this.Request.CallAjax("/NewItemDelivery/GetPartialView_AddArticleFullQuantity", "", GUIRequests.AddToView);
}
GUIRequests.AddToView = function (html) {
$("#addedItems").append(html);
}
的一个按钮按钮打一个阿贾克斯电话给我的控制器,它将执行以下操作:
public ActionResult GetPartialView_AddArticleFullQuantity()
{
WrongItemsReceivedModel model = new WrongItemsReceivedModel();
ModelContainer<WrongItemsReceivedModel> container = (ModelContainer<WrongItemsReceivedModel>)TempData["ModelContainer"];
container.Add(model);
return PartialView("~/views/Shared/EditorTemplates/_AddArticleFullQuantity.cshtml", container.Models[0]);
}
而在最后,我得到了我预期它会告诉我,我的模板,但最初从列表中显示的项目编号
所以通常我有相同的元素:
<input class="form-control col-md-6 text-box single-line" data-val="true" data-val-required="MESSAGE" id="Models_0__ModelNumberID" name="Models[0].ModelNumberID" onchange="m_GUIRequests.SetWrongItemsReceivedValues()" type="text" value="">
但我得到这个:
<input class="form-control col-md-6 text-box single-line" data-val="true" data-val-required="MESSAGE" id="ModelNumberID" name="ModelNumberID" onchange="m_GUIRequests.SetWrongItemsReceivedValues()" type="text" value="">
我认为它是因为我用EditorFor“command”添加了一个,但另一个添加为PartialView。 有什么办法可以添加一个EditorFor元素,以便我的逻辑不会中断?
这篇文章很好,但没有源代码,我无法使用Html.BeginCollectionItem() – Bongo
尝试在开始处下载“演示项目”链接。它应该包括你需要的一切。 –
是的,我想到了;)但我收到所有的查杀错误404 – Bongo