ASP.NET - MVC3属性装饰?

时间:2011-01-30 02:04:10

标签: asp.net-mvc-3

是否有一个属性可以在我的模型上装饰一个属性,告诉引擎不要在验证例程中包含该属性?

[DoNotValidate]或[ValidateIgnore]

----------------------更多信息。 好的,我需要向您提供更多信息。在我的情况下,我的模型上有一个临时的十进制值,它没有被持久化,被格式化为货币。 $ 540,000。 在这种情况下,我不想在调用TryUpdateModel之前去除格式。当您使用TryupdateModel时,mvc将尝试将该字符串文本框值转换回小数,而Model.IsValid将返回false。我知道如何使用javascript解决这种情况,但如果我能告诉mvc不要验证该字段会更容易。

3 个答案:

答案 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)

仅当您明确将验证属性应用于属性时,才会验证属性。