2017-05-23 60 views
0

我使用MVC 5为我的应用程序,其中用户可以创建一个具有零到许多酒吧的Foo。模型验证对话框内

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

当用户点击“Add new Bar”按钮时,Ajax调用会附加新的Bar模板并将其公开在Jquery UI对话框中 - 并且在每次追加后,我将重新分析表单,以便验证拾取新字段。在提交给控制器时,Foo和Foo.Bars都会正确发布。好极了!

我的问题是,在对话框验证不会触发。如果我放弃对话框,只是暴露了DOM验证中的Bar字段效果很好。我认为这是因为对话框中的内容(酒吧模板)不包含Form标签。但是,如果我将表单标签添加到条形模板,那么发布到控制器失败。

在这种情况下打开对话框时,可以在对话框中使用模型验证吗?

回答

0

回答了我自己的问题。默认情况下,jQuery对话框紧挨着body标签,因此它不在表单内。我使用对话框的“appendTo”选项来代替追加到标签。