MVC 4
に電話番号とメールアドレスの両方を持つModel
があります。それは登録のようなものです。したがって、ユーザーは電子メールまたは携帯電話番号、またはその両方を提供できます。しかし、私はそれらの代替フィールドを作ることはできません。私のモデルは、ここでMVC 4アプリケーションで代替フィールドを作成するにはどうすればよいですか?
public class RegisterModel
{
[Required]
[Display(Name = "User name")]
[UsernameValidator(ErrorMessage = "Only Letters and numbers")]
[System.Web.Mvc.Remote("IsUserExitst", "Account", HttpMethod = "POST", ErrorMessage = "This user name already exists. Try a new one.")]
public string UserName { get; set; }
[Required]
[StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
[DataType(DataType.Password)]
[Display(Name = "Confirm password")]
[System.ComponentModel.DataAnnotations.Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
public string ConfirmPassword { get; set; }
[Required]
[MaxLength(50)]
[EmailOrPhoneValidator(ErrorMessage = "Invalid Phone number")]
[Display(Name = "Phone number")]
[System.Web.Mvc.Remote("IsMobOrEmailExists", "Account", HttpMethod = "POST", ErrorMessage = "This Phone number or Email already exists. Try a new one.")]
public string MobileNo { get; set; }
[Required]
[MaxLength(50)]
[EmailAddress(ErrorMessage = "Invalid Email address")]
[Display(Name = "Email")]
[System.Web.Mvc.Remote("IsEmailExists", "Account", HttpMethod = "POST", ErrorMessage = "This Email already exists. Try a new one.")]
public string Email { get; set; }
}
のようなものです 私は、代わりにEmail
とPhoneNo
を使用します。カスタム必須フィールドとして動作するクラスを作成したいと思います。私はこの質問を見てきました。
- Question答えはjavascriptと組み合わせたものです。しかし、私はそれを使用しません。私はクラスファイルを書き留め、私のロジックを実装します。
RequiredIf
は私の質問の正確な提案と思われますが、私はその解決策を試して疲れました。私は自分のプロジェクトで.dllをインポートする方法を理解できません。それはMvc 3で開発されました。- もう1つはsolutionですが、ここではクラス内の代替プロパティを組み合わせています。だから私のプロパティが完全に別々であるように私はどのように行うのですか?じゃあ何をすればいいの。
最初のリンクには何が問題なのですか。 'Email'が提供されない場合、' MobileNo'が提供され、 'MobileNo'が提供されない場合、' Email'が提供されることが必要です。私は2番目のオプションで、[foolproof](http://foolproof.codeplex.com/)属性を参照すると仮定します。 (これには '[RequiredIfNot]'があります) –
他の必要なエラーと同様にエラーメッセージを表示することができないので、 'javascript'は好きではありません。 Javascriptはそれ自身の方法でエラーを表示しています。 – gdmanandamohon
もちろん可能です。これは、クライアント側の検証が 'jquery.validate.js'と' jquery.validate.unobtrusive.js'を使ってどのように動作するのかです。 –