对话框内的模型验证

时间:2017-05-23 05:18:00

标签: asp.net-mvc-5 jquery-ui-dialog editortemplates

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

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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

相关问题