2014-01-09 69 views
0

我现在正在研究一个现有的asp.net MVC应用程序,它在一个网页中有几个提交按钮(例如忽略,删除,更新,提交...)和他们都向服务器发送一个发布请求,服务器将根据请求动作类型(例如忽略,删除,更新,提交)执行不同的操作。动态绕过服务器端模型验证ASP.NET MVC

但是,无论操作如何,都会触发模型验证的问题。根据业务规则,我们只需要对某些操作执行验证。验证后,我可以清除模型状态中的错误。 (例如MVC3 Remove ModelState Errors)。

但是我希望有一个更好的方法来根据客户端的操作参数绕过模型验证。

顺便说一句:我不允许大幅改变它的工作方式(例如发送到另一个不关心验证的操作),所以我希望有一些技巧可以用来实现这很容易。

+0

根据参数检查'ModelState.Valid'并继续 –

回答

0

我认为像现在你正在检查模型状态错误...

if (ModelState.Valid) 
{... valid and do something...} 

如果是这样,您可以包括将在您的条件被认为是前手一些额外的检查。例如,如果它是一个删除提交,你可以事先检查。

bool isDelete = ***check some value*** 

if (isDelete || ModelState.Valid) 
{... valid and do something...} 

这种方式即使模型状态无效,它仍然会前进。

需要考虑的一件事是您需要在模型中设置一些内容来告诉您发生了什么操作。这可能意味着使用JavaScript来捕获提交,设置模型字段,然后执行提交。

+0

我可能会补充说,对您提到的每种操作类型分别执行不同的操作可能是最佳做法。这样,你就不必经历扭曲的局面,它们都可以通过自己的模型验证来控制。 –