Mer*_*nzo 53 asp.net-mvc unobtrusive-validation asp.net-mvc-3 asp.net-mvc-4
编辑 - 我们正在使用MVC4开发预览....
我正在为一个FishingTrip类实现一个编辑页面. FishingTrip包含简单Crew对象的子集合(即FishingTripID,CrewID,CrewPosition).
我正在使用Jarrett Meyer的方法来添加,编辑和删除Crew集合.我正在使用不显眼的验证来指定属性Crew都是Required.
我的问题:当我从列表中逻辑删除一个项目时(按照Jarrett的方法),我不希望该项目得到验证.
我已成功调整客户端的"removeRow"方法,以禁用对逻辑删除的项目进行不显眼的验证,以便尽管存在包含空白字段的项目,表单仍会发布.
在我的控制器方法中[HttpPost] Edit,ModelState.IsValid启动为false(正如预期 - 因为逻辑删除的项目包含空白字段.)所以我从我的ViewModel中删除该项目....但ModelState.IsValid仍然是假的.
总之,我(我想)我想在控制器方法中修改我的ViewModel以删除有问题的项目,然后调用某种"revalidate",并ModelState.IsValid显示为true.
有任何想法吗?
cou*_*ben 125
删除违规项目后,清除ModelState并再次进行验证,如下所示:
ModelState.Clear();
TryValidateModel(crew); // assumes the model being passed is named "crew"
Run Code Online (Sandbox Code Playgroud)
注意:使用TryValidateModel方法时要小心,因为此方法不验证模型的嵌套对象(如@Merenzo所述).
| 归档时间: |
|
| 查看次数: |
21234 次 |
| 最近记录: |