У меня есть этот код на сущности, созданной с использованием EF 4:
[MetadataType(typeof(MemberMetaData))]
public partial class Member
{
public string ConfirmPassword { get; set; }
[PropertiesMustMatch("Password", "ConfirmPassword", ErrorMessage = "Password and confirm password do not match.")]
public class MemberMetaData
{
[Required(ErrorMessage = "Email is required.")]
[DataType(DataType.EmailAddress, ErrorMessage = "Email is invalid.")]
//[RegularExpression(@"^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$")]
public object Email { get; set; }
[Required]
[DataType(DataType.Password)]
[DisplayName("Password")]
public object Password { get; set; }
[Required]
[DataType(DataType.Password)]
[DisplayName("Confirm Password")]
public object ConfirmPassword { get; set; }
}
}
Свойствами участников в сущности Member являются пока Email и пароль.
Я пытаюсь использоватьаннотации данных для возврата сообщения о проверке обратно в представление и создания модульного теста следующим образом:
[TestMethod]
public void register_post_displays_error_when_email_not_entered()
{
// Arrange
Member model = new Member()
{
Email = "",
Password = "test123",
ConfirmPassword = "test123"
};
// Act
var result = _controller.Register(model) as ViewResult;
// Assert
Assert.AreEqual("Email is required.", result.ViewData.ModelState["Email"].Errors[0].ErrorMessage);
}
Это не удается, когда я вхожу в контроллер ModelState.IsValid всегда имеет значение true.Вот мое действие контроллера:
[HttpPost]
public ActionResult Register(Member model)
{
if (ModelState.IsValid)
{ //register
}
// If we got this far, something failed, redisplay form
return View("Register");
}
Почему это не работает?