0
私はMVCの[MetadataType(T)]
属性を見たことがありますが、それはすべて上質で良いですが、それが配置されているクラスを自己参照するという顕著な影響があるかどうかは疑問でした。私はそれを使い、試してみました。それはすばらしく動作します。実際、あまりにも真実であることは良いことです。だから、私が基本的に知りたいのは...私は次のコードで何か危険なことをしていますか?ASP.NET MVCのMetadataTypeの自己参照は安全ですか?
[MetadataType(typeof(RegisterViewModel))]
public class RegisterViewModel : IMember {
[Required]
[DataType(DataType.EmailAddress)]
[RegularExpression(Text.RegularExpressions.Email, ErrorMessage = Text.ErrorMessages.Email)]
[Display(Name = "Email Address")]
[Rules("The name you'll login with. You can't use: <em>[ ] | ; , $ \\ < > \"</em>")]
public string Email { get; set; }
[Required(ErrorMessage = "You must enter a password.")]
[StringLength(32, MinimumLength = 6)]
[DataType(DataType.Password)]
[RegularExpression(Text.RegularExpressions.Password, ErrorMessage = Text.ErrorMessages.Password)]
[Display(Name = "Enter your password")]
[Rules("Passwords must be between 6 and 32 characters, may contain any alphanumeric character and the symbols <em>@ # $ %</em> only.")]
public string Password { get; set; }
[Required(ErrorMessage = "You must confirm your password.")]
[StringLength(32, MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "Re-enter your password")]
[RegularExpression(Text.RegularExpressions.Password, ErrorMessage = Text.ErrorMessages.Password)]
[Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
public string ConfirmPassword { get; set; }
}
次に、特定のシナリオでそれを回避する方法を教えてください。私はクラスからメタデータ属性を読み込もうとしていますが、そのインスタンスはありません。なぜ私はポイントがあったのかに関する関連情報を投稿しました。 – Ciel
私は知らない... – SLaks
あなたは大丈夫です。私の間違いは、同じ 'FormContext'と' MetadataType'属性を再利用していることでした。別のHtmlHelperを通して同じ 'FormContext'を再利用しないと、属性なしで正常に動作します。 – Ciel