Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.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 对.dbml文件中的类保持验证_Asp.net Mvc_Validation_Asp.net Mvc 4_Html - Fatal编程技术网

Asp.net mvc 对.dbml文件中的类保持验证

Asp.net mvc 对.dbml文件中的类保持验证,asp.net-mvc,validation,asp.net-mvc-4,html,Asp.net Mvc,Validation,Asp.net Mvc 4,Html,我一直试图通过向.dbml文件中类的属性添加HTML属性来验证用户输入。(在designer部分中)。这是有效的。但是,当我更改数据库的设计并尝试刷新.dbml文件时,这些行(HTML属性)将从我的类中删除,即使我将属性分配给的类没有更改。我尝试在不同的文件中添加属性,因为主类是分部的,这是不可能的。它不允许我更改属性。那我该怎么办 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_at_name", DbType="NVar

我一直试图通过向.dbml文件中类的属性添加HTML属性来验证用户输入。(在designer部分中)。这是有效的。但是,当我更改数据库的设计并尝试刷新.dbml文件时,这些行(HTML属性)将从我的类中删除,即使我将属性分配给的类没有更改。我尝试在不同的文件中添加属性,因为主类是分部的,这是不可能的。它不允许我更改属性。那我该怎么办

[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_at_name", DbType="NVarChar(50) NOT NULL", CanBeNull=false)]
[Required(ErrorMessage = "account name is necessary")]
public string at_name
{
get
{
   return this._at_name;
}
set
{
   if ((this._at_name != value))
   {
       this.Onat_nameChanging(value);
       this.SendPropertyChanging();
       this._at_name = value;
       this.SendPropertyChanged("at_name");
       this.Onat_nameChanged();
        }
    }
}

使用数据注释,您可以将验证放在单独的类中,然后使用属性从部分类定义中引用该类。例如:

[MetadataType(typeof(PersonValidator))]
public class Person
{        
    public string Name { get; set; }
    public int Age { get; set; }        
}

public class PersonValidator
{
    [Required]
    public string Name { get; set; }

    [Range(0, int.MaxValue, ErrorMessage = "Invalid age")]
    public int Age { get; set; }
}

您可以将
元数据类型
放在您的部分类(而不是VS生成的部分类)上。

但有一个问题:在您的答案中,PersonValidator和Person之间的get/set函数是相同的。没有区别,我想知道如果我更改get/set函数的内容,编译器是否会覆盖以前的函数?Person类中的get/set就是将要使用的。PersonValidator实现没有使用,只是使用了它们的定义。谢谢你的批改;我也一直很感激你:)再次感谢你的回答。不幸的是,我不能投票支持你的答案。我的名声还不够。很抱歉