3

私のアプリケーションでは、ランタイム データに基づいて UI を動的にレンダリングしています。モデルはありますが、コンパイルされたプロパティはありません。代わりに、データベースをチェックし、次のようなヘルパーを使用して複数のフィールドをレンダリングしています。

@Html.TextBox("name", RunTimeValue)

これらのフィールドに検証を含めたいのですが、その方法がわかりません。カスタム MetadataProvider は機能していないようです。これは、プロバイダーが属性を提供する一方で、モデルにプロパティがあることを期待しているためです。しかし、私のモデル プロパティは実行時まで存在しません。EditorForこのような理由で、私も使用できません。では、この状況に検証 (クライアントとサーバー) を挿入するにはどうすればよいでしょうか?

4

5 に答える 5

6

目立たない検証を有効にしている場合、これを行うことで不正行為を行うことができます

@Html.TextBox("name", RunTimeValue, new Dictionary<string, object> { { "data-val", "true" }, { "data-val-required", "The name is required" } })

すぐに使用可能なその他の data-val 値は、data-val-regex (data-val-regex-pattern を使用)、data-val-range (data-val-range-min および data-val-range-max を使用) です。 )、data-val-number など、使用していないものがあります。

于 2012-05-04T14:28:22.753 に答える
0

次のように、JQuery Validation メソッドのクライアント側 Validation を使用できます。

<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/jquery.validate.min.js"></script>
<script type="text/javascript">
      $(document).ready(function () {
          $("form").validate({
              rules: {
                  name: "required"
              }
          });
      }); 
 </script>
于 2012-05-04T13:38:23.300 に答える
0

あなたの制約はどこにありますか?

文字列の最大長、null かどうかなど、db 自体の制約はありますか? その場合、データベースから列タイプをロードし、そこから検証を生成するツールを構築できます。リクエストごとにモデルを生成する場合は、実行時に検証属性を生成することもできます。おそらく、最初にモデルと制約をロードし、独自のバインド ロジックを記述して、送信された値でモデルを更新し、それに対して検証を実行する必要があります。

コードに制約がありますか? この場合、実行時にロードされたフィールドをコード内の制約にマップするだけで済みます。

于 2012-05-04T13:38:48.840 に答える