【发布时间】:2015-01-16 03:29:59
【问题描述】:
我有一个视图,在同一页面上呈现了一堆 相同 表单,并且 我想让 Knockout 的数据绑定适用于页面上的每个表单。
我在 主视图 上呈现所有表单 - 每个表单都在其自己的 PartialView 中,如下所示:
@Model Forms.Models.ViewModels.MasterViewModel
@foreach (var form in Model.Form.ToList())
{
Html.RenderPartial("_Form", form);
}
但是因为所有的表单都是相同的,所以它们都使用相同的数据绑定,并且 MVC 使用相同的 ID 呈现它们:
局部视图:
@Html.LabelFor(m => m.foo)
@Html.TextBoxFor(m => m.foo, new { @class = "form-control", data_bind = "value: foo" })
@Html.ValidationMessageFor(m => m.foo)
我可以做些什么来将 Knockout 的绑定应用到页面上的每个表单,或者这是不能做的事情(例如,因为 MVC 不介意用相同的 ID 渲染 HTML inputs )?
【问题讨论】:
-
真的有必要反复渲染表单吗?您可以将一个 observable(比如 selectedItem)绑定到表单的一个实例。然后使用当前需要呈现的任何数据更新 selectedItem 可观察对象的值。
-
根据我的要求,每个单独的表单都呈现为 jQuery Accordion 中的面板。 Accordion 可能有两个或多个具有相同表单的面板,每个表单都有相同的输入 ID/名称,所以我不确定 Knockout ViewModel 将如何工作。
标签: jquery asp.net-mvc knockout.js