gpt4 book ai didi

asp.net-mvc - 在 Controller 方法中重新验证修改后的 ViewModel?

转载 作者:行者123 更新时间:2023-12-03 05:53:16 24 4
gpt4 key购买 nike

编辑 - 我们正在使用 MVC4 Dev Preview...

我正在为 FishingTrip 类实现一个编辑页面。 FishingTrip 包含简单 Crew 对象的子集合(即 FishingTripID、CrewID、CrewPosition)。

我正在使用Jarrett Meyer's approachCrew 集合中添加、编辑和删除。我使用不显眼的验证来指定 Crew 的属性都是必需

我的问题:当我从列表中逻辑删除一个项目(按照 Jarrett 的方法)时,我不希望验证该项目。

我已成功调整客户端上的“removeRow”方法,以禁用对逻辑删除项目的不显眼的验证,以便尽管存在包含空白字段的项目,但表单仍会发布。

在我的 Controller 方法 [HttpPost] Edit 中,ModelState.IsValid 开始为 false(如预期 - 因为逻辑删除的项目包含空白字段。)所以我从我的 ViewModel 中删除了该项目......但 ModelState.IsValid 仍然是 false。

总之,我(认为我)想在 Controller 方法中修改我的 ViewModel 以删除有问题的项目,然后调用某种“重新验证”,并使 ModelState.IsValid 显示为正确。

有什么想法吗?

最佳答案

删除有问题的项目后,清除 ModelState 并再次验证,如下所示:

ModelState.Clear();
TryValidateModel(crew); // assumes the model being passed is named "crew"

注意:使用 TryValidateModel 方法时要小心,因为该方法不会验证模型的嵌套对象(正如 @Merenzo 提到的)。

关于asp.net-mvc - 在 Controller 方法中重新验证修改后的 ViewModel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7833396/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com