【问题标题】:Bypass server-side model validation dynamically ASP.NET MVC动态绕过服务器端模型验证 ASP.NET MVC
【发布时间】:2014-01-09 23:11:53
【问题描述】:

我现在正在开发一个现有的 asp.net MVC 应用程序,该应用程序在一个网页中有几个提交按钮(例如忽略、删除、更新、提交...),它们都向服务器发送一个发布请求,然后服务器将根据请求操作类型(例如忽略、删除、更新、提交)执行不同的操作。

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

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

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

【问题讨论】:

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

标签: c# .net asp.net-mvc


【解决方案1】:

我假设您现在正在检查模型状态错误,例如...

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

如果是这样,您可以在手头添加一些额外的检查,这些检查将在您的条件中考虑。例如,如果是删除提交,您可以事先检查。

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

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

这样即使模型状态无效,它仍然会向前移动。

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

【讨论】:

  • 我可能会补充一点,为您提到的每种操作类型设置单独的操作可能是最佳实践。这样您就不必费力地弄清楚它,并且它们都可以通过自己的模型验证来控制。
猜你喜欢
  • 2013-01-28
  • 2013-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多