Asp.net mvc 对.dbml文件中的类保持验证
我一直试图通过向.dbml文件中类的属性添加HTML属性来验证用户输入。(在designer部分中)。这是有效的。但是,当我更改数据库的设计并尝试刷新.dbml文件时,这些行(HTML属性)将从我的类中删除,即使我将属性分配给的类没有更改。我尝试在不同的文件中添加属性,因为主类是分部的,这是不可能的。它不允许我更改属性。那我该怎么办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
[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实现没有使用,只是使用了它们的定义。谢谢你的批改;我也一直很感激你:)再次感谢你的回答。不幸的是,我不能投票支持你的答案。我的名声还不够。很抱歉