Asp.net mvc 使用ValidationAttribute对递归关系进行MVC 4验证
我有一个MVC项目,在不同的模型中有几个递归关系。请参见下面的示例模型结构 例如:Asp.net mvc 使用ValidationAttribute对递归关系进行MVC 4验证,asp.net-mvc,asp.net-mvc-4,recursion,validationattribute,Asp.net Mvc,Asp.net Mvc 4,Recursion,Validationattribute,我有一个MVC项目,在不同的模型中有几个递归关系。请参见下面的示例模型结构 例如: tileid和parentid(一个磁贴可以与多个磁贴相关) regionid和parentid(一个区域可以与多个区域相关) 我想创建一个名为PreventRecursiveParent的MVCValidationAttribute,它是动态的,可以在整个系统中使用,而不考虑模型,这会阻止用户将模型上的parentid分配给它自己。i、 e.防止父级和子级之间出现无限循环 e、 g。 缩短的样本模型如下所示
(一个磁贴可以与多个磁贴相关)tileid和parentid
(一个区域可以与多个区域相关)regionid和parentid
PreventRecursiveParent
的MVCValidationAttribute
,它是动态的,可以在整个系统中使用,而不考虑模型,这会阻止用户将模型上的parentid分配给它自己。i、 e.防止父级和子级之间出现无限循环
e、 g。
缩短的样本模型如下所示:
public partial class Tile
{
public Tile()
{
this.ChildTiles = new List<Tile>();
this.TileRoles = new List<TileRole>();
this.TileCompanies = new List<TileCompany>();
}
[Key]
public int tileid { get; set; }
[Required]
[Display(Name = "Tile Header")]
public string tileheading { get; set; }
//This is a recursive relationship where a tile can have a parent, but not itself.
[PreventRecursiveParent] //--> Attribute I would like to create <--
[Display(Name = "Parent Tile")]
public Nullable<int> parentid { get; set; }
public virtual Tile ParentTile { get; set; }
}
公共部分类平铺
{
公共瓷砖()
{
this.ChildTiles=新列表();
this.TileRoles=新列表();
this.TileCompanies=新列表();
}
[关键]
公共int tileid{get;set;}
[必需]
[显示(Name=“磁贴标题”)]
公共字符串tileheading{get;set;}
//这是一种递归关系,其中平铺可以有父级,但不能有其自身。
[PreventRecursiveParent]/-->属性我想创建一个听起来像您只想要一个[NotEqualTo(“parentid”)]
属性,您可以应用到tileid
或regionid
(或其他方式)。如果你不想自己写,就写一本。我已经看过《万无一失》,我想这会有用的。谢谢你的反馈:)