0

我正在 ASP.NET MVC4 中编写 Razor 视图。

我有一个要显示的对象列表。我目前正在使用 @Html.EditorFor() 和为数据模型列表定义的 EditTemplate。

首先,我想使用 jquery 有条件地显示/隐藏编辑模板中的控件,但我不确定脚本应该放在哪里(也许在编辑模板中?)以及它如何在当前迭代中仅选择相关控件编辑模板。

接下来我想要一个添加按钮来生成控件的新实例(可能通过 AJAX?)并将其添加到客户端的列表中。

以前有人做过这样的事情吗?有没有办法在模板中获取迭代计数,以便我可以将它放在控件类或其他东西中?我需要能够在 jquery 中选择它们,以便切换控制状态。


代码看起来像这样:

在主视图中:

@Html.EditorFor(vm => vm.ListOfChildViewModels)
<button type="button" class="btn" id="btnAddViewModel">Add view model</button>

编辑器模板:

@MyNamespace.Web.ViewModels.VMType

@Html.DropDownListFor(vm => vm.SelectorProperty, Model.SelectorOptions)

// This checkbox should only get displayed if the dropdown has selectedIndex == 0
@Html.CheckBoxFor(vm => vm.Option1)

// This checkbox should only get displayed if the dropdown has selectedIndex == 1
@Html.CheckBoxFor(vm => vm.Option2)

// Etc...
4

1 回答 1

0

最终在服务器端进行处理以保持繁重的工作。ID 是第一次通过 EditTemplate 自动生成的。每当我需要从列表中添加/删除时,我都会在 AJAX 调用中将序列化表单传递给服务器。服务器然后进行请求更改并传回列表的呈现 HTML,可以使用 jquery 在客户端交换进出。

本来可以使用客户端绑定来解决这个问题,但服务器上的 C# 目前更可测试且编译安全。不幸的是,成本是往返服务器并返回以更新列表。

于 2013-11-04T13:23:28.720 回答