验证没有在MVC中使用ModelState

时间:2013-05-13 13:59:07

标签: c# asp.net-mvc validation

我最近开始使用MVC并且一直在使用框架来查看其局限性,并且在验证的情况下我注意到的一件事情如下。

在MVC上实现验证的传统方法是实现[必需],[范围] 等等在模型级别,然后在控制器级别使用ModelState.IsValid属性,以确保要保存的对象有效。

但这似乎有一个限制,让我说我有以下对象

[Table(Name = "Products")]
public class Product
{

    private int _id;
    private string _freeProductId; 

    [Column(IsPrimaryKey = true, Storage = "_id", Name = "id", IsDbGenerated = true)]
    public int Id
    {
        get
        {
            return (_id);
        }
        set
        {
            _id = value;
        }
    }

[Required]
[Column(Storage = "_freeProductId", Name = "free_product_id")]
public string FreeProductId
{
    get
    {
        return (_freeProductId);
    }
    set
    {
        _freeProductId = value;
    }
}

}

我可以在控制器级使用ModelState.IsValid验证Product对象, 检查是否已输入FreeProductId。但是我们说我有一个网络服务 能够创建新产品,或任何其他我不是的实例 使用控制器创建一个新的Product对象并保存它,[Required]属性 在这种情况下没有用,并且无法检查对象是否有效。

然而,我确实挖了一下,想出了一种方法将所有验证都移到了 对象级别是使所有对象实现IValidatableObject接口 从而验证对象的所有属性。

有没有人知道另一种方式吗?

0 个答案:

没有答案