【发布时间】:2012-05-30 03:33:11
【问题描述】:
我的模型有点复杂。
我有我的UserViewModel,它有几个属性,其中两个是HomePhone 和WorkPhone。都是PhoneViewModel 类型。在PhoneViewModel 我有CountryCode、AreaCode 和Number 所有字符串。我想让CountryCode 可选,但AreaCode 和Number 是强制性的。
这很好用。我的问题是UserViewModel中WorkPhone是强制的,而HomePhone不是。
无论如何我可以通过在HomeWork 属性中设置任何属性来禁用PhoneViewModel 中的Require 属性吗?
我试过了:
[ValidateInput(false)]
但它只适用于类和方法。
代码:
public class UserViewModel
{
[Required]
public string Name { get; set; }
public PhoneViewModel HomePhone { get; set; }
[Required]
public PhoneViewModel WorkPhone { get; set; }
}
public class PhoneViewModel
{
public string CountryCode { get; set; }
public string AreaCode { get; set; }
[Required]
public string Number { get; set; }
}
【问题讨论】:
-
你能显示你的模型/视图模型的代码吗?
-
是的,当然。给我几分钟,因为我写了一个例子,这不完全是我的情况。
-
好的,我可能在接下来的一个小时内无法回答,所以因为要开会,所以希望其他人可以回答!
-
作为参考,ValidateInput 属性并不是最好的——它实际上更像是一个安全过滤器,而不是模型验证。它验证了安全性,而不是“正确性”。来自 MSDN:“[ValidateInput] 的工作原理是根据硬编码的潜在危险数据列表检查所有输入数据。”
标签: c# asp.net-mvc asp.net-mvc-3 data-annotations validationattribute