2012-03-29 6 views
0

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

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

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

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

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

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

+0

私は@MystereManに同意します。また、あなたの質問が少し不完全であるか、むしろポイントにならないように見えることに注意してください。 MVCは既に控えめな "クライアントサイド"検証を組み込んでいます。私は最近似たようなことをしました。私はModelMetadataProviderと新しいhtmlテンプレートを作成して、動的モデルのHTMLに邪魔にならないデータダッシュhtml属性を配置します。正しいモデルですが、独自のJavaScriptコードを記述する必要があります。 –

+0

質問の最後に、「既存のMVCコードを使用して、データ注釈を使用せずに控えめなクライアント側の検証を作成できる方法はありますか」と述べています。つまり、データアノテーションなしで、JavaScriptコードを自分で記述することなく、控えめな評価を実装することができます。新しいModelMetadataProviderを実装するのと同じ解決策が出てくるか、私の場合はAssociatedMetadataProviderから継承したようです。 ボルトが正確に位置合わせされていないという理由だけで、すでに取り付けられているホイールをコピーする必要がないのであれば、いいでしょう。 –

+0

できません。これは作品の仕方であり、残念なことにあなたの作品は完成しなければなりません。 –

答えて

0

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

htmlのような文脈を提供していないので、私たちはあなたが望むものを達成する方法を伝えることはできません。

関連する問題