c# - MVC 3でのカスタムデータアノテーション検証の作成

原文 c# asp.net asp.net-mvc asp.net-mvc-3

たとえば、従業員ビューモデルがあります。従業員を作成するとき、ユーザー名を検証して、それが存在しないことを確認します。

public class EmployeeViewModel
{
    [ScaffoldColumn(false)]
    public int EmployeeId { get; set; }

    [ValidateDuplicate(ErrorMessage = "That username already exists")]
    [Required(ErrorMessage = "Username is required")]
    [DisplayName("Username")]
    public string Username { get; set; }
}


次に、重複をチェックするコードを含むValidateDuplicate関数をどこかに配置します。

これは可能ですか?
答え
remote validation.を見ることをお勧めします。この例はあなたのケースにも一致します。

基本的に、コントローラーアクションを指すリモート属性をビューモデルプロパティに追加します。

[Remote("IsUserExists", "Account", ErrorMessage = "Can't add what already exists!")]
[Required(ErrorMessage = "Username is required")]
[DisplayName("Username")]
public string Username { get; set; }


あなたの仕事はどちらですか

public ActionResult IsUserExists(string userName) 
{
 if (!UserService.UserNameExists(userName) || (CurrentUser.UserName == userName))
 {
      return "Ok.";
 }
}
関連記事

c# - Visual Studio:「スタート」ボタンをクリックする代わりに、スクリプトを使用して「ソリューションをビルド」、「ソリューションを再構築」、またはスクリプトする方法

c# - 派生クラスのシリアル化に基本クラスのフィールドが含まれていません

c# - C#プログラムからのPowerShellスクリプトの実行は、直接実行する場合とは異なる動作をします

c# - ViewModel依存関係を持つICommand

c# - WCF独自のEndpointBehavior読み取りクライアントセッション

c# - Convert.ChangeType()が日付文字列(dd / MM / yyyy形式)を日時タイプに変換しないのはなぜですか?

c# - 辞書からnull可能値を削除し、型を再キャストする

c# - C++からC#への複雑な構造体のマーシャリング

c# - C#:テキストファイルへの変数の挿入

c# - エンティティフレームワークで作成されたデータベースからヘルパーのドロップダウンリストにアイテムをロードする