我是MVC中的一个小组。我有一个模型:
public class Usuarios
{
[Required(ErrorMessage = "**TxtOPID is required")]
public string TxtOpID
{
get { return this.txt_opId; }
set { this.txt_opId = value; }
}
[Required(ErrorMessage="**Password is required")]
public string TxtPassword
{
get { return this.txt_password; }
set { this.txt_password = value; }
}
[Required(ErrorMessage="**Email is required")]
[RegularExpression("^[a-z0-9_\\+-]+(\\.[a-z0-9_\\+-]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)*\\.([a-z]{2,4})$",ErrorMessage="**Invalid email")]
public string TxtEmail
{
get { return this.txt_email; }
set { this.txt_email = value; }
}
}
当我尝试使用ModelState.IsValid属性检查所有属性是否有效时,这是DataAnnotations并且工作正常。
问题是当我不想检查所有属性时.i.e: 如果我只想检查TxtOPID和TxtSenha属性,就像在登录表单中那样只需要OPID和密码。
如何在控制器中的特定操作中排除电子邮件属性验证?
我试过了:
public ActionResult SignIn([Bind(Exclude="TxtEmail")]Usuarios usuario)
{
[...]
}
但是它不起作用,它总是无效的原因,该特定表格不需要TxtEmail。
任何想法?
答案 0 :(得分:3)
不要将所有验证都放在一个类中。为Login
构建一个类,为Contact
等构建另一个类
基本上每个模型都有DataAnnotations来验证该模型..即使你有30个不同的模型。您始终可以创建基类并在其中放置公共属性,并直接从中继承。
在我的情况下,我有一个登录表单,Class(使用DataAnnotations)验证“UserName”和“Password”。我还有一个“事件”表单,需要事件名称,日期,时间等。所以我有另一个类来验证事件。