我的模型有一些属性,其中之一是类数组,对于模型和数组类中的某些属性,使用 datannotation 属性。在视图中,用户将某些行填充为数组和其他模型属性,并且可能会删除某些行(arrayProperty),我设置为已删除行状态:删除,并在操作中从数组中删除已删除行,操作步骤是:
- 在第一次行动中一切正常(验证完成)
- 模型状态.清除
- 删除数组中状态为删除的项目
- 使用 TryValidateModel 验证细化模型
这适用于模型中的所有属性,除了数组属性
动作代码:
public ActionResult Test(ViewModel model)
{
ModelState.Clear();
model.Array = model.Array.Where(p => p.Status != false).ToArray();
if(ModelState.IsValid){}
TryValidateModel(model);
return View();
}
班级代码:
public class ViewModel
{
public TestClass[] Array { get; set; }
[Required]
public string Family { get; set; }
}
public class TestClass
{
[Required]
public string Name { get; set; }
public int? Age { get; set; }
public bool Status { get; set; }
}