0

我在我的应用程序中使用 MVC 5,用户可以在其中创建一个具有零到多个 Bars 的 Foo。

我的 Foo 创建视图调用 HTML.EditorForModel() 来加载 Foo 的编辑器模板。我的 Foo 模板具有 HTML.BeginForm 标记和对 Html.EditorFor(model => Model.Bar) 的调用,该调用为没有 Form 标记但使用 BeginCollectionItem 帮助器的 Bar 加载编辑器模板。所以最终结果是 Foo 和 Bar 模型都在一个 Foo 形式中。

当用户单击“添加新栏”按钮时,Ajax 调用会附加新栏模板并将其公开在 Jquery UI 对话框中 - 每次附加后,我都会重新解析表单,以便验证获取新字段。在提交给控制器时,Foo 和 Foo.Bars 都会正确发布。耶!

我的问题是在对话框中验证没有触发。如果我放下对话框并在 DOM 验证中公开 Bar 字段,效果会很好。我认为这是因为对话框(栏模板)中的内容不包含表单标签。但是,如果我将表单标签添加到 Bar 模板,那么发送到控制器的帖子将失败。

在这种情况下打开对话框时,是否可以让模型验证在对话框中工作?

4

1 回答 1

0

回答了我自己的问题。默认情况下,jQuery 对话框会附加在 body 标记之前,因此它不在表单内。我使用对话框的“appendTo”选项将其附加到标签中。

于 2017-05-23T14:12:44.100 回答