gpt4 book ai didi

c# - ASP.Net MVC 添加动态 EditorFor 元素

转载 作者:行者123 更新时间:2023-11-30 16:04:41 24 4
gpt4 key购买 nike

我有一个带有 EditorTemplate 的小项目。我展示了一些最初在 List<T> 中的项目但我希望能够在用户按下按钮时添加项目。

通常我会像这样将项目添加到 View

@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);
}

该按钮对我的 Controller 进行 ajax 调用,它将执行以下操作

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“命令”添加了一个,但另一个添加为 PartialView。有什么方法可以添加 EditorFor 元素,这样我的逻辑就不会中断?

最佳答案

要在 ASP.NET MVC 中编辑可变长度列表,我建议阅读 following article .它提供了一种非常简洁的方法来实现这一点。在服务器上,您不需要任何 TempData 来保持持久性,它还说明了一个不错的小 helper 的用法,它可以让您生成正确的输入字段名称。

就您的问题而言,输入名称错误的原因是正确的,因为当您直接从 Controller 操作返回局部 View 时,它不再具有编辑器模板的父上下文。有一些方法可以规避这种情况,但它非常老套,我宁愿推荐本文中介绍的方法。

关于c# - ASP.Net MVC 添加动态 EditorFor 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34653088/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com