重新验证控制器方法中修改的ViewModel?
-
27-10-2019 - |
题
编辑-我们正在使用MVC4开发预览...。
我正在为FishingTrip
类实现一个编辑页面。 FishingTrip
包含简单的Crew
对象(即FishingTripID,CrewID,CrewPosition)的子集合。
我正在使用 Jarrett Meyer的方法添加,编辑和删除Crew
集合。
我正在使用不打扰的验证来指定Crew
的属性全部是Required
。
我的问题:当我从列表中逻辑删除项目时(按照Jarrett的方法),我不希望该项目得到验证。
我已经成功地调整了客户端的“ removeRow”方法,以禁用逻辑删除项目的不干扰验证,以便尽管存在包含空白字段的项目,该表单仍将发布。
总而言之,我(我想)想在控制器方法中修改ViewModel以删除有问题的项,然后调用某种“重新验证”,并使ModelState.IsValid
显示为true。
解决方案
一旦删除了有问题的项目,请清除ModelState并再次验证,如下所示: 通用标签
注意:使用TryValidateModel
方法时要小心,因为该方法无法验证模型的嵌套对象(如@Merenzo所述)。
其他提示
晚于游戏,但仍然:
我也在寻找一种方法来验证模型 之后,对该模型进行了一些调整(更确切地说是对其嵌套集合的项目进行了调整),并且TryValidateModel
对我不起作用,因为它对我不起作用处理嵌套对象。
最后,我选择了自定义模型活页夹: 通用标签
在模型类上: 通用标签
不隶属于 StackOverflow