私は、これは、このようなものの内側に2子のviewmodel年代を持つことになりますのviewmodelを作成することですachievieの最良の方法だと思います私のプロジェクトに非常に似たシナリオを実装している:
public class AuthModelView
{
public MemberLoginViewModel LoginModel { get; set; }
public MemberRegisterViewModel RegisterModel { get; set; }
[HiddenInput]
public string ReturnUrl { get; set; }
}
はMemberLoginViewModel:
public class MemberLoginViewModel
{
[Required(ErrorMessage = "")]
[Display(Name = "")]
[EmailAddress]
public string Email { get; set; }
[DataType(DataType.Password)]
[Display(Name = "")]
[Required(ErrorMessage = "")]
public string Password { get; set; }
[Display(Name = "")]
public bool RememberMe { get; set; }
}
MemberRegisterViewModel:
public class MemberRegisterViewModel
{
[Required(ErrorMessage = "")]
[DataType(DataType.EmailAddress)]
public string Email { get; set; }
[Required(ErrorMessage = "")]
[DataType(DataType.Password)]
[Display(Name = "")]
public string Password { get; set; }
[Required]
public string RepeatPassword { get; set; }
[HiddenInput(DisplayValue = false)]
public string ReturnUrl { get; set; }
}
そしてY OU「モデル」は、あなたの親ViewModelにある場合、あなたは2つの区切らフォームつのビューで を持っています2つの部分のビューをレンダリングするビュー
@Html.Partial("MemberLoginSummary", Model)
@Html.Partial("MemberRegisterSummary", Model)
を作成します。あなたの部分図であなたは、単にような何か:あなたが別のライブラリを試してみたいなら、あなたはFluentValidation
で行くことができ
@Html.TextBoxFor(m => m.LoginModel.Email, null, new { @class = "form-control", placeholder = "email", id="Email" })
それぞれのケースには、2つの別々のビューモデルを持つ2つの別々のフォームという異なる検証ルールがあります。 – Jasen
異なるタイプのログインに1つのモデルと1つのフォームを使用する場合は、モデルに[必須]属性を設定できないと思います。あなたは常にいくつかの空の値を持っています。 @Jasen氏によると、別のビューと別のモデルを使用してログインの種類ごとにお勧めします。 – kat1330
AJAXまたはポストバックを使用していますか?ポストバックの場合、現在の回答の中には、あなたのために痛みを引き起こすものがあります。 –