Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 MVC 3模型的部分验证_Asp.net Mvc 3_Razor_Validation_Entity Framework Mapping - Fatal编程技术网

Asp.net mvc 3 MVC 3模型的部分验证

Asp.net mvc 3 MVC 3模型的部分验证,asp.net-mvc-3,razor,validation,entity-framework-mapping,Asp.net Mvc 3,Razor,Validation,Entity Framework Mapping,我目前正在MVC 3的一个项目中工作,在这个项目中,我利用实体框架在两个视图上持久化一个数据模型,每个视图包含一个HTML表单,类似于基于向导的设计 但是,在用户在第一个视图上填写适当的字段并提交表单后,会触发整个模型的客户端验证,并且会显示在第二个视图实例化之前无法输入的字段的验证错误 我目前已经实现了一种变通方法,在这种方法中,我只需完全关闭第一个视图的客户端验证,但我当然不喜欢用根本没有验证过的数据填充模型。这很糟糕。梅凯 是否有任何方法可以部分验证第一个视图上的字段,而不触发整个数据模型

我目前正在MVC 3的一个项目中工作,在这个项目中,我利用实体框架在两个视图上持久化一个数据模型,每个视图包含一个HTML表单,类似于基于向导的设计

但是,在用户在第一个视图上填写适当的字段并提交表单后,会触发整个模型的客户端验证,并且会显示在第二个视图实例化之前无法输入的字段的验证错误

我目前已经实现了一种变通方法,在这种方法中,我只需完全关闭第一个视图的客户端验证,但我当然不喜欢用根本没有验证过的数据填充模型。这很糟糕。梅凯


是否有任何方法可以部分验证第一个视图上的字段,而不触发整个数据模型的赋值?

这就是ViewModels的来源。不应直接将域模型与视图绑定,而应在其上创建视图模型并绑定到视图。

如果不需要直接对EF模型进行验证,则可以根据需要使用进行部分验证。看一看我的长篇小说。

谢谢大家的意见。然而,我能够以一种非常简单的方式获得解决方案。通过在第一个视图的HttpPost元素中放置以下代码

如果ModelState.IsValidFieldFirstField&&ModelState.IsValidFieldSecondField 返回重定向到操作名称操作,模型; 其他的 返回视图

…我能够实现部分现场验证。但是,只有在第一个视图上的Submit按钮具有类cancel且为第一个视图上不存在的字段生成的附加验证错误在上述if语句之前手动清除的情况下,此特定于字段的方法才会起作用。为此,请使用:

ModelState["FieldName"].Errors.Clear();
建筑结构没有重大变化。没有局部视图。禁止传递未经验证的数据

效果很好

注意:如果第二个视图加载时出现验证错误,请使用:

ModelState.Clear


在最初调用第二个视图的操作中。这将使第二个视图加载干净且无错误,同时在最终表单提交后仍会显示验证错误。

能否向我们显示第一个视图的代码,并告诉我们哪些视图不应进行验证?这将使破译这个问题变得非常容易。我感谢你的意见,但是它并没有真正回答我的问题。如果可能的话,我希望保持我当前的架构不变,并坚持使用一个领域模型,正如您所说的那样。建议我使用ViewModels并不能直接解决我在部分验证中遇到的问题。如果您已经有了一个体系结构,并且无法更改视图模型,那么您必须使用自定义模型绑定,SO reg中有大量线程。是的,在我问这个问题之前,我在我的搜索中看到了这个解释。这是非常彻底和非常详细的,但可惜它没有直接回答我的问题。我理解通过接口类分解和处理验证的概念,但我真正感兴趣的是从整体上找到部分验证的答案。是否要求您直接将验证放在EF模型上?不一定,但这正是我目前构建的东西。