我已经通过使用配置文件提供程序扩展成员资格提供程序来实现自定义注册页面。我成功注册了用户。现在我想验证注册页面的字段。内置注册页面内置了验证消息。 在我的编码中我不是将模型传递给注册操作,而是我传递属性。所以如果我使用If(ModelState.IsValid)它总是给出即使我没有填充任何字段。但是在它抛出异常但是不在页面中显示错误消息。请告诉我我必须做什么。如何获取验证消息。
我看到帐户模型类用于寄存器模型内置的验证条件是存在的。所以我也是这样写我的属性。
提前致谢,
public ActionResult UserRegistration(string FirstName,string LastName,string LoginId,string EmailId,string Password,string 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));
}
答案 0 :(得分:0)
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; }
}