我有两个模型,即Login和Register:
登录模型
public class LoginModel
{
[Required(ErrorMessage = "Email is required")]
[RegularExpression("^[a-z0-9_\\+-]+(\\.[a-z0-9_\\+-]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)*\\.([a-z]{2,4})$", ErrorMessage = "Not a valid email")]
[DataType(DataType.EmailAddress)]
[DisplayName("Email")]
[StringLength(150, ErrorMessage = "Must be less than 150 characters")]
public string Email { get; set; }
[Required(ErrorMessage = "Password is required")]
[DataType(DataType.Password)]
[DisplayName("Password")]
[StringLength(30, ErrorMessage = "Must be less than 30 characters")]
public string LoginPassword { get; set; }
[DisplayName("Remember me")]
public bool Remember { get; set; }
}注册模型:
public class RegisterModel
{
[Required(ErrorMessage = "Email is required")]
[RegularExpression("^[a-z0-9_\\+-]+(\\.[a-z0-9_\\+-]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)*\\.([a-z]{2,4})$", ErrorMessage = "Not a valid email")]
[DataType(DataType.EmailAddress)]
[DisplayName("Email")]
[StringLength(150, ErrorMessage = "Must be less than 150 characters")]
public string Email { get; set; }
[Required(ErrorMessage = "Full Name is required")]
[DisplayName("Full Name")]
[StringLength(50, ErrorMessage = "Must be less than 50 characters")]
public string FullName { get; set; }
[Required(ErrorMessage = "Password is required")]
[DataType(DataType.Password)]
[DisplayName("Password")]
[StringLength(30, ErrorMessage = "Must be less than 30 characters")]
public string RegisterPassword { get; set; }
[Required(ErrorMessage = "Confirm Password is required")]
[DataType(DataType.Password)]
[DisplayName("Confirm Password")]
[StringLength(30, ErrorMessage = "Must be less than 30 characters")]
public string ConfirmPassword { get; set; }
[Required(ErrorMessage = "Please read and agree the terms and condition.")]
[DisplayName("I agree to the terms and conditions")]
public bool AgreeTerms { get; set; }
}它们都是使用单独的模式弹出窗口在主页上调用的-->所以让我们假设用户是否注册了自己(在注册时,他在没有输入电子邮件的情况下按enter键,并显示验证消息)。成功注册后,用户尝试登录(并再次按enter键而不输入电子邮件),但这次不显示验证消息。
据我所知,没有显示验证摘要的原因是验证消息出现在注册模式中,该模式目前不可见,这是因为两个模型都使用了电子邮件(名为: Email)字段属性。
我可以使用电子邮件字段的不同名称来实现我想要的行为,但是有什么方法不这样做吗?
除此之外,我是否可以从Register模型继承,并将其用于登录目的,同时执行此操作时,上述方案的输出将是什么?
发布于 2011-05-20 03:57:40
您必须修改编辑器模板,使其包含一个前缀或其他使其唯一的东西。这里有一个答案,它提供了一些我认为适用于TextBoxFor rendering to HTML with prefix on the ID attribute的扩展方法。
https://stackoverflow.com/questions/6059678
复制相似问题