是否有一个属性可以在我的模型上装饰一个属性,告诉引擎不要在验证例程中包含该属性?
[DoNotValidate]或[ValidateIgnore]
----------------------更多信息。 好的,我需要向您提供更多信息。在我的情况下,我的模型上有一个临时的十进制值,它没有被持久化,被格式化为货币。 $ 540,000。 在这种情况下,我不想在调用TryUpdateModel之前去除格式。当您使用TryupdateModel时,mvc将尝试将该字符串文本框值转换回小数,而Model.IsValid将返回false。我知道如何使用javascript解决这种情况,但如果我能告诉mvc不要验证该字段会更容易。
答案 0 :(得分:2)
应忽略未使用验证属性修饰的任何模型属性。
public class MyModel
{
[Required]
public string SomeProperty { get; set; }
public string IgnoredProperty { get; set; }
}
应验证是否需要SomeProperty,但IgnoredProperty不会发生任何事情。
关于模型验证的最佳教程IMHO是http://weblogs.asp.net/scottgu/archive/2010/01/15/asp-net-mvc-2-model-validation.aspx
(即使它说MVC 2,它也适用)。
答案 1 :(得分:1)
将小数的类型更改为可为空的十进制以防止所需的验证:
public class MyModel
{
public decimal MyValidatingDecimal { get; set; }
public decimal? MyNonValidatingDecimal { get; set; }
}
将需要MyValidatingDecimal(因为它是值类型),而不需要MyNonValidatingDecimal。
答案 2 :(得分:0)
仅当您明确将验证属性应用于属性时,才会验证属性。