0

動的コンテンツからMVC3でhtmlを作成する必要があります。私のシナリオでは、ユーザーと状況に応じて表示されるhtmlフィールドを変更できるビューを作成する必要があります。フィールドを取得して使用する準備が整い、変更できるようになるまで、フィールドの可能な範囲はわかりません。この基本的な機能はMVCではかなり簡単です。ただし、問題が発生する場所である、目立たないクライアント側の検証を使用したいと思います。

これがシナリオです。モデルに複雑なタイプのリストがあります。複合型インスタンスは、作成する必要のあるhtmlフィールドに関するメタデータを格納します。たとえば、複合型には、作成するhtml要素型を指定するDataType文字列プロパティがあります。テキストボックスの入力要素の場合は「テキスト」、チェックボックスの入力要素の場合は「チェックボックス」、選択要素の場合は「選択」など。複合型には、Readonly、IsRequired、Value、Regex、MinLength、MaxLengthなどのプロパティがあります。これには、さまざまなHTML要素を作成し、それらの要素を検証するために必要なすべてのものが含まれています。

したがって、複合型のリストがコントローラーのモデルに挿入され、ビューが呼び出されます。ビューには、リスト内の各複合タイプの複合タイプの設定を考慮して、適切なhtml要素を表示する必要があります。これは、複合型を管理するための新しいヘルパーを作成するか、複合型のDataTypeをチェックして適切なヘルパーを使用するビューのループにswitchステートメントを含めることで実現できます。ここまでは順調ですね。

ただし、JavaScriptクライアント側の目立たない属性を自分で作成せずに、クライアント側の検証を使用したい場合に問題が発生します。これは、私が達成したいことです。既存のMVCコードを使用して、データ注釈を使用せずに目立たないクライアント側の検証を作成する方法はありますか?

たとえば、既存のModelMetadataProvider DataAnnotationsModelMetadataProviderを上書きし、自分のヘルパーから新しいメソッドを呼び出します。

上記のシナリオを達成するための最良の方法は何でしょうか?

4

1 に答える 1

0

「動的MVC3 html」をどのように正確に作成していますか? 実際のビューを使用せずに html を作成しているだけということですか? 検証はモデル バインダー (html ではなく) でサーバー側で処理されるため、動的 html は違いを生みません。クライアント側では、 data-* 属性を追加するだけで機能します。

html がどのようなコンテキストに基づいているかを提供していないため、目的を達成する方法を説明することはできません。

于 2012-03-29T18:03:31.370 に答える