javascript - 动态地将模型行添加到表中

标签 javascript asp.net-mvc

我现在已经读了很多文章,从 Phil Haacks 的“模型绑定(bind)到列表”到 Steve Sanderson 的“编辑可变长度列表”,现在试图解决我的问题 - 但我无法真正让它工作.

我有两个模型 - 订单和文章。一个订单有很多文章。订单 View 包含一个文章表。

目前,我正在订单 View 模型中使用 EditorFor(model => model.Articles) 创建第一个表行。

它识别出 Articles 是一个列表并返回正确的列表项。到目前为止,一切都很好。

现在我想要一个将文章添加到表行的链接,但通过使用对 Controller 的 AJAX 请求,然后返回部分 View (仅包含文章表行)。我已经使用本教程完成了该工作:http://blog.stevensanderson.com/2010/01/28/editing-a-variable-length-list-aspnet-mvc-2-style/

但是,我的问题是我不知道如何以 ASP.NET MVC“样式”继续文章行序列,以便在提交时能够识别它。 (例如文章[1].编号文章[2].编号等)

这是我的代码。 “添加文章”链接应添加一篇文章并向/orders/BlankArticleRow 发送 ajax 请求

public ActionResult BlankArticleRow(int pos)
        {
            Article article = new Article()
            {
                Position = pos
            };

            return View(article);
        }

BlankArticleRow 的部分 View 如下所示:

@model Bestellinterface.Models.Article

@{
    Layout = null;
}

@Html.EditorFor(model => model)

工作正常。当我单击“添加文章”链接时,会添加行,但是文本字段等的属性没有正确的格式。我想要的是它继续 html 元素的编号,Articles[0].Number、Articles[1].Number、Articles[2].Number ...

EditorFor 可以做到这一点吗?有没有办法模拟一个列表,使其保持编号?

最佳答案

是的,您可以使用 EditorFor 来实现:

    @{ int i = 0; }
@foreach (var article in Model.Articles)
{
@Html.EditorFor(model => Model.Articles[i])
i++;
}

假设编辑器模板包含字段 Title、Description,我们最终会得到 Articles[i].Title、Articles[i].Description。

您的一个解决方案可能是返回包含订单所有文章的部分内容,这将确保您的索引正确。

或者,您可以使用 JavaScript 更新输入的索引。

为了在从动态表中删除项目时保持索引正确,我编写了以下内容:

//reset index values
$('#links-table tbody tr').each(function (index, value) {
    $(this).find('input[type=text]').prop('name', function (i, e) { return e.replace(/(\d+)/g, index) });
});

这会查找每个输入名称中的索引,例如Articles[2].Title 并将其替换为新索引。您可以在 ajax 调用成功后执行类似的操作。

希望有帮助 本

关于javascript - 动态地将模型行添加到表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6468306/

相关文章:

javascript - 仅当您将鼠标悬停在其上时显示下拉菜单,或者当您将鼠标悬停在其上时隐藏下拉菜单

javascript - 为什么canvas不会画图?

asp.net-mvc - 使用 RadioButtonFor 编写一组单选按钮的正确方法

c# - 如何将 Azure AD 身份验证应用程序从开发计算机移动到服务器?

c# - 非通用声明不允许约束

c# - SignalR 安全

javascript - MobX 存储职责

javascript - React Native 超大图片定位

javascript - 使用 angularJS 在前面转换货币

c# - 我如何使用 System.Net.NetworkInformation.GatewayIPAddressInformation 类?