【问题标题】:Validation in ASP .NET MVC 4 for Contact type using IValidatableObject在 ASP .NET MVC 4 中使用 IValidatableObject 对 Contact 类型进行验证
【发布时间】:2013-11-25 20:40:26
【问题描述】:

声明:在下面的视图中,我可以选择任何一种联系方式(例如:手机或电子邮件或Skype...)
如果我选择手机,我应该在下面的文本框中只输入手机号码,
如果我选择电子邮件,我应该只在下面的文本框中输入电子邮件详细信息,

问题: 我的问题是如何验证联系人详细信息文本框?
如果我选择了手机,它应该只接受数字,
如果选择了电子邮件,它应该只接受电子邮件 ID,如果我尝试添加任何不必要的详细信息,它应该显示正确的验证消息

我正在使用 ASP.NET MVC 4,我尝试使用 IValidatableObject,但我不知道如何使用此特定问题

【问题讨论】:

  • @Neel 作为答案发布的内容是有效的,但如果您想使用 IValidatableObject,您只需做同样的事情 - 对相关属性运行正则表达式,如果失败,则执行 yield return new ValidateObject("ErrorMessage here", new List{ "Field1" });
  • @Ahmedilyas 但我只有一个字段我无法将两个验证都添加到一个属性我的模型如下所示: public int contactTypeId { get;set;} public string TypeValue { get;set; } 所以我不能同时向一个属性添加属性(电子邮件和电话)验证
  • 对,但是当为实现 IValidateObject 接口的对象调用验证时,您仍然可以根据需要进行验证。
  • 但验证取决于我在联系人类型下拉列表中选择的内容,如果我选择移动设备,模型将如何知道联系人类型的值以及我应该如何处理这个..
  • 这不是验证逻辑。这是更多的业务/领域逻辑。如果您选择移动设备,那么您在联系人详细信息中输入任何数据,您仍然需要根据您输入的类型以某种方式对其进行验证。您不能真正拥有一个通用的多合 1 属性来验证每个条目。您需要有一些业务逻辑来确定选择的联系人类型 id 的类型和 ITS 验证规则。

标签: asp.net asp.net-mvc asp.net-mvc-4


【解决方案1】:

这样进行验证怎么样?我不确定它的正确答案与否..

[Required(ErrorMessage = "Email_id must not be empty")]
[RegularExpression(".+\\@.+\\..+", ErrorMessage = "Please Enter valid mail id")]
public string Email { get; set; }

[Required(ErrorMessage = "Please enter  phone number")]
[RegularExpression(@"^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$”, ErrorMessage = “Enter valid number”)]
public string Phone { get; set; }

【讨论】:

  • 我的模型看起来像这样 public int contactTypeId { get;set;} public string TypeValue { get;set; } 所以我不能同时添加属性(电子邮件和电话)验证
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-30
  • 2012-08-23
  • 1970-01-01
相关资源
最近更新 更多