0

以下のクラスモデル(C#を使用したMVC 3)を使用して従業員を登録しています。パスワード/パスワードの確認フィールドは、新規登録時に使用されます。既存の従業員を編集するときに、パスワードの更新/入力/パスワードの確認を再度行いたくありませんが、(パスワードとパスワードの確認に関する)検証が行われているため、従業員の残りの情報を更新できません。

 public class EmployeeModel
    {   
    ....
    ....
    [Required(ErrorMessage = "Password is must")]
    [Display(Name = "Password")]
    [MaxLength(20, ErrorMessage = "Password can be maximum 20 chars long")]
    [StringLength(20, ErrorMessage = "Password can be maximum 20 chars long")]
    [MinLength(5, ErrorMessage = "Not a valid password, must be atleast 5 chars long")]
    public string Password { get; set; }

    [Compare("Password", ErrorMessage = "Password and Confirm password do not match")]
    public string ConfirmPassword { get; set; }
    ....
    ....
    }

私の質問は次のとおりです。従業員を編集するための別のモデルクラスを作成する必要があります(この新しいモデルにはパスワード/パスワードの確認フィールドがありません)?しかし、この種の状況は他のモジュールでも発生する可能性があり、モジュールごとに2つのモデルクラスを使用することになりたくないため、問題があります。

または編集中にパスワード/パスワードの確認フィールドをロードする必要がありますが、ユーザーには非表示にする必要がありますか?上記の手順は意味がありますか?他にどのような方法が可能ですか?

4

3 に答える 3

0

ビューを編集するために異なるフィールドと検証が必要な場合は、ビューを編集するための適切なビューモデルを作成することをお勧めします。そのMVCはとても楽しんでください。

于 2013-01-30T06:59:19.410 に答える
0

ビューモーダルの概念があります。このような状況を回避するために、ビューごとに個別のモーダルを作成します

于 2013-01-30T06:59:30.900 に答える
0

別のモデルクラスを作成する必要はありません。

既存のモデルクラスを操作できます。検証にフィールドを含めたくない場合は、ModelStateからそれらを削除できます。

これはあなたがそれをするべき方法です:

public ActionResult Edit(EmployeeModel empmodel)
{

        ModelState.Remove("Password");
        ModelState.Remove("ConfirmPassword");
        if (ModelState.IsValid)
        {
          //do something
        }

}

それが役に立てば幸い

于 2013-01-30T07:07:57.583 に答える