Безопасно ли ссылаться на MetadataType в ASP.NET MVC? - PullRequest
0 голосов
/ 15 июня 2011

Я видел атрибут [MetadataType(T)] для MVC, все хорошо, но мне было интересно, есть ли какие-нибудь выдающиеся последствия самоссылки на класс, в который он помещен. Я использовал это, попробовал это, и это чудесно работает. Слишком хорошо, чтобы быть правдой, на самом деле. Итак, что я в основном хочу знать ... я делаю что-то опасное со следующим кодом?

[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; }
}

1 Ответ

2 голосов
/ 15 июня 2011

Нет смысла.

Атрибут [MetadataType] указывает MVC читать атрибуты из свойств суррогатного класса вместо исходных свойств самого класса.
Он предназначен для ситуаций, в которых вы не можетедобавить атрибуты в исходный класс (например, если класс был автоматически сгенерирован дизайнером)

Без этого атрибута MVC будет считывать атрибуты из вашего класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...