在asp.net mvc 2.0中进行模型状态验证
我已通过使用配置文件提供程序扩展成员资格提供程序来实现自定义注册页面。我成功注册了用户。现在,我要验证注册页面的字段。“内置注册”页面具有内置验证消息。 在我的编码中,我不是将模型传递给注册动作,而是传递属性。因此,如果我使用If(ModelState.IsValid),它总是给出真实的,即使我没有填充任何字段。但是在它抛出异常之后但不在页面中显示错误消息。请告诉我我必须做什么。如何获取我的验证消息。
我看到Account Models类中的注册模型是在那里建立的。因此,我也为我的属性写这样的。
提前致谢,
公共ActionResult UserRegistration(字符串名字,字符串姓氏,字符串LoginId,字符串EmailId,字符串密码,字符串ConfirmPassword){
//int id= int.Parse(ViewData["id"] as string);
string firstName = FirstName;
string lastName = LastName;
string userName = LoginId;
string email = EmailId;
string password = Password;
string confirmPassword = ConfirmPassword;
if (ModelState.IsValid)
{
MembershipCreateStatus status = MembershipService.CreateUser(userName, password, email);
//MembershipCreateStatus user = Membership.CreateUser(userName, password, email);
Roles.AddUserToRole(userName, "User");
UserProfile.NewUser.Initialize(userName, true);
UserProfile.NewUser.FirstName = firstName;
UserProfile.NewUser.LastName = lastName;
if (status == MembershipCreateStatus.Success)
{
UserProfile.NewUser.Save();
FormsService.SignIn(userName, false /* createPersistentCookie */);
return RedirectToAction("CreateAccountConfirmation");
}
else
{
ModelState.AddModelError("", AccountValidation.ErrorCodeToString(status));
}
ModelState是有效的,因为它有一个空白字段无效。
您必须在您的操作中手动检查每个字段( if (FirstName == null) ModelState.AddModelError("blabla");
)
或者(我会建议)你创建一个ViewModel并为其提供验证属性
public class RegistrationModel
{
[Required]
public string FirstName { get; set; }
[Required]
public string LastName { get; set; }
[Required]
public string LoginId { get; set; }
[Required]
public string EmailId { get; set; }
[Required]
public string Password { get; set; }
[Required]
public string ConfirmPassword { get; set; }
}
链接地址: http://www.djcxy.com/p/9695.html