Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc MC2中的数据注释-基类验证问题_Asp.net Mvc_Entity Framework 4_Data Annotations - Fatal编程技术网

Asp.net mvc MC2中的数据注释-基类验证问题

Asp.net mvc MC2中的数据注释-基类验证问题,asp.net-mvc,entity-framework-4,data-annotations,Asp.net Mvc,Entity Framework 4,Data Annotations,我有一个EntityFramework4模型的第一层,其中我有一个产品基类,然后是从该类派生的不同类。对于每种类型的产品都有一个分部类,然后每个分部类都使用一个buddy类进行数据注释 [MetadataType(typeof(Product_Validation))] public partial class Product : EntityObject { private List<RuleViolation> ruleViolations = new List<R

我有一个EntityFramework4模型的第一层,其中我有一个产品基类,然后是从该类派生的不同类。对于每种类型的产品都有一个分部类,然后每个分部类都使用一个buddy类进行数据注释

[MetadataType(typeof(Product_Validation))]
public partial class Product : EntityObject
{
    private List<RuleViolation> ruleViolations = new List<RuleViolation>();
}
我遇到的问题是,在我的ASP.NET MVC2应用程序中,没有在服务器端进行基类验证(针对产品)。我还没有试过客户端

从Product派生的类(如CD)确实具有验证功能。我知道buddy类的连接适用于基本产品类,因为我使用的显示名称正在被使用。当我为模型进行绑定时,我使用的是派生类(CD)

有什么想法吗

我看着这个,但它似乎并没有让我走


谢谢

您是模型绑定基类还是派生类

如果我没记错几个月前的一些实验,那么您需要将绑定作为一个产品。在操作方法或UpdateModel调用中不能使用CD


您可能需要执行两组模型绑定才能正常工作。一次用于产品验证,另一次用于CD

如果这是真的,我会把它作为另一个问题和可能的功能请求的一个很好的候选者。如果我同时需要基本产品和派生CD,那么视图如何工作?我有一个强类型视图,它继承了包含派生类(CD)的viewmodel。Thanks@John我不知道你在问什么。如果您有一个带有CD型号的视图,那么您也有一个带有产品型号的视图。@NickLarsen抱歉。。。对MVC来说有点新鲜。我有一个视图模型,它有一个派生类(CD)、分页和一个过滤器。这是我的视图继承的模型。当表单发回到我的操作时,这就是我验证的视图模型。我是否需要将派生类(CD)强制转换为基类(产品)以根据基类模型进行验证?如果我听到了行话,请道歉incorrect@JohnPtacek铸造无法解决您的问题。ModelBinder在内部调用GetType(),它总是返回最具体的类型。
public  class Product_Validation
{


    [DisplayName("Model Name")]
    public string ModelName { get; set; }

    [Required(ErrorMessage = "A description is required")]
    [StringLength(2, ErrorMessage = "must be 2 or more")]
    public string Description { get; set; }
}