0

ユーザーがゼロから多くのバーを持つ Foo を作成できるアプリに MVC 5 を使用しています。

Foo の作成ビューは、Foo のエディター テンプレートをロードする HTML.EditorForModel() を呼び出します。私の Foo テンプレートには HTML.BeginForm タグと Html.EditorFor(model => Model.Bar) への呼び出しがあり、これは Form タグを持たないが、BeginCollectionItem ヘルパーを使用している Bar のエディター テンプレートをロードします。したがって、最終結果は、Foo モデルと Bar モデルの両方が 1 つの Foo フォーム内にあるということです。

ユーザーが [新しいバーを追加] ボタンをクリックすると、Ajax 呼び出しによって新しいバー テンプレートが追加され、Jquery UI ダイアログに公開されます。追加するたびにフォームを再解析して、検証で新しいフィールドが取得されるようにします。コントローラーへの送信時に、Foo と Foo.Bars の両方が正しくポストされます。わーい!

私の問題は、ダイアログ ボックスで検証が実行されないことです。ダイアログをドロップして、DOM 検証で Bar フィールドを公開するだけでうまくいきます。これは、ダイアログのコンテンツ (Bar テンプレート) に Form タグが含まれていないためだと思います。しかし、フォーム タグを Bar テンプレートに追加すると、コントローラーへの投稿が失敗します。

このシナリオで開いているときに、ダイアログ内でモデルの検証を機能させることは可能ですか?

4

1 に答える 1

0

私自身の質問に答えました。デフォルトでは、jQuery ダイアログは body タグの直前に追加されるため、フォーム内にはありません。ダイアログの「appendTo」オプションを使用して、代わりにタグに追加しました。

于 2017-05-23T14:12:44.100 に答える