我有一个带嵌套集合的模型:
public class SomeClass
{
public SomeClass()
{
this.OtherPart = new HashSet<OtherPart>();
}
[Key]
public int SomeClassId { get; set; }
public string SomeData { get; set; }
public string SomeOtherData { get; set; }
public virtual ICollection<OtherPart> OtherParts { get; set; }
public void CreateOthers(int count = 1)
{
for (int i = 0; i < count; i++)
{
OtherParts.Add(new OtherPart());
}
}
}
使用此Controller操作:
public ActionResult Create()
{
var abc = new SomeClass();
abc.CreateOthers();
return View(abc);
}
它完美无缺。我现在遇到的问题是,对于我的用例,我需要设置要创建的最大项目数(在本例中为5)。
我在上面的空白中尝试了以下修改,但它被忽略了:
public void CreateOthers(int count = 1, int max = 5)
{
for (int i = 0; i < count && count < max; i++)
{
OtherParts.Add(new OtherPart());
}
}
有关如何有效限制添加到嵌套集合的最大项目数的任何建议?
谢谢!
答案 0 :(得分:2)
您可能需要一个自定义验证器,类似于:
validator
在您的型号代码中,只需执行以下操作:
public class MaxItemsAttribute : ValidationAttribute
{
private readonly int _max;
public MaxItemsAttribute(int max) {
_max = max;
}
public override bool IsValid(object value) {
var list = value as IList;
if (list == null)
return false;
if (list.Count > _max)
return false;
return true;
}
}
答案 1 :(得分:0)
更改为i&lt;最大
public void CreateOthers(int count = 1, int max = 5)
{
for (int i = 0; i < count && i < max; i++)
{
OtherParts.Add(new OtherPart());
}