【问题标题】:ASP.NET MVC Helper to add items to arbitrary listASP.NET MVC Helper 将项目添加到任意列表
【发布时间】:2014-05-09 10:16:40
【问题描述】:

我正在使用 technique 显示一个可编辑的项目列表。

@Html.EditorFor(m => m.Directorships)

这适用于列出和编辑现有列表项,但我也想添加新项。过去,我编写了一些客户端脚本 (jQuery) 来向列表中添加其他项目并正确命名字段索引。然而,脚本被硬编码为模型属性名称。

我希望能够为所有列表重复使用该脚本。比如:

@Html.EditorAndAdderFor(m => m.Directorships)

有人知道现有的解决方案或可能的实现吗?

【问题讨论】:

  • 使用带有表单的局部视图在编辑器页面中添加新的董事职位
  • @user3153169 我不太明白。你能在帖子中详细说明吗?
  • 这会如何运作?服务器端助手不添加客户端 javascript,因此无法让您的服务器端助手在客户端上进行类似的操作。
  • @ErikFunkenbusch:我希望它的工作方式与HtmlHelper.EditorFor() 帮助程序的工作方式完全相同——通过以通用方式添加正确的客户端标记和脚本,该方式适用于任何列表任意对象。可能就像EditorFor() 方法可以支持不显眼的客户端验证一样。
  • EditorFor 不添加任何脚本。它只添加数据属性,已经存在的脚本可以使用。无论如何,您都必须编写脚本。

标签: c# jquery asp.net asp.net-mvc asp.net-mvc-5


【解决方案1】:

如果我理解正确,您希望拥有一个具有显示数据、更改数据和添加新数据功能的页面。

显示和编辑可以通过@Html.EditorFor 来完成,就像你已经做的那样。要在同一页面中添加功能,您应该使用表单创建一个局部视图,如下所示:

您的页面:

@model MyProject.MyModels.MyModel

// The @Html.EditorFor stuff..

@Html.Partial("_AddForm")

_AddForm.cshtml:

@model MyProject.MyModels.Directorship

@using (Html.BeginForm("CreateDirectorshipActionName")) {
    @Html.EditorFor(m => m.Attribute1)
    // etc..

    <input type="submit" value="Add" />
}

您可以添加 Ajax 功能以留在页面上,并在添加新董事时重新加载或加载新数据

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多