【问题标题】:Disable action method from being called from the address bar禁止从地址栏调用操作方法
【发布时间】:2013-05-22 16:26:02
【问题描述】:

我的控制器中有一个方法,我不想从浏览器的地址栏中调用它...

有没有办法做到这一点?也许某种注释,修改路由配置?我有哪些选择?

【问题讨论】:

  • 您希望如何称呼这个Action?仅限HttpPost?或者您打算从Controller 中调用它?难道它只是一个常规方法而不是Action?我认为您能够做到这一点的唯一方法是使用 [HttpPost] 属性。

标签: asp.net-mvc-4 controller actionmethod


【解决方案1】:

如果您打算仅在控制器或视图中使用此操作,则可以使用ChildActionOnly 属性。

如果你想使用 POST 访问它,那么你可以使用[HttpPost] 属性。

但是,如果您希望使用 GET 使用它(即使用 AJAX 调用等)并且不希望用户使用地址栏访问它,那么您可以按照此 tutorial 使您的操作仅 AJAX。

或者,如果您只是想要一个根本不是 Action 的方法(即不能使用 HTTP 调用),那么您可以将其设为 private 或使用 [NonAction] 属性

【讨论】:

  • 我想添加 ChildActionOnly 仅适用于视图。如果尝试从 Controller 调用它们,您将面临错误,因为 “身份验证”操作只能由子请求访问。
【解决方案2】:

在方法上使用NonAction 属性。

【讨论】:

猜你喜欢
  • 2015-07-16
  • 2011-06-10
  • 1970-01-01
  • 1970-01-01
  • 2012-09-13
  • 2011-05-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多