2011-12-21 30 views
6

私はASP.Net MVC 3を使用しています。 Id、Name、Age、RollNoというプロパティを持つStudentというエンティティがあります。 Studentの作成ページでは、検証フレームワークを使用しました。しかし、[高度な検索]ページでは、すべてのプロパティを使用していますが、ユーザーがすべてのフィールドを検索に使用したくないため、検証フレームワークを使用したくありません。.NETの@ Html.TextBoxForの検証を無効にする

また、私はモデルクラスで[必須]注釈を使用していたことに言及したいと思います。

この問題を解決するのを手伝ってください。

よろしく Molay

+0

使用 'Html.TextBox'代わりに? 'TextBoxFor'がもたらす他の優しさは失われますが、ハードコーディングが難しくありません。 – tugberk

+0

このような気分になったら、この検索ページやその他のカスタムページ用にViewModelを検討するとします。すべてのViewModelは常にベストプラクティスです。 –

答えて

15

私はあなたの質問に答えるために、あなたはいくつかのオプションのクライアント側持っていますが、検索のために別々のビューモデルを使用し、xixoniaに同意するだろう:HTML属性としてdata-val = "false"

  1. パス、例えば:@Html.TextBoxFor(x => x.Age, new { data_val = "false" });
  2. @Html.TextBox()を使用して代わりに
  3. それはモデル

Iに結合するように、手動で同じ入力された名前を使用してHTMLを使用してテキストボックスを作成バックエンドで検証を行っている場合は、ModelState.IsValidをチェックすると、ModelStateから検証プロパティを削除する必要があります(ModelState.Remove("Age");)。

+0

私はそれについて考えることはありませんでした! :) –

+0

ありがとう!それは働いている。 – Molay

2

あなたは、実行時に属性を削除することはできません。作成のための学生エンティティ1と検索のためのその他のビューモデルを用意する必要があります。

+0

これを見てくださいhttp://stackoverflow.com/q/5367287/293712 – Maheep

2

(彼らはあるべきな)Studentクラスの値が制限されているようですね。

私はむしろ学生を使用するよりも、検索のための別のビューモデルを使用して検討します。

public class Student 
{ 
    [ValidationAttributeOfSomeKind] 
    int Age { get; set; } 

    [ValidationAttributeOfSomeKind] 
    string Name { get; set; } 
} 

public class StudentSearch 
{ 
    int? Age { get; set; } 

    string Name { get; set; } 
} 
1

私はあなた自身のテキストボックスヘルパーを書く必要があると思います。これを無効にする方法はありません。

1

は、フォーム上でこのコードを追加します。

@Html.EnableClientValidation(false); 
+0

この作品は完璧です!ありがとう。 – Jirapong

関連する問題