【问题标题】:If I do not specify [httpGet] or [httpPost] for the action method , what will be the rule for calling it如果我没有为操作方法指定 [httpGet] 或 [httpPost],调用它的规则是什么
【发布时间】:2014-10-23 16:49:47
【问题描述】:

之前很多文章都提到过HttpGet是默认的http方法。例如,如果我在 asp.net mvc Web 应用程序中有以下操作方法,没有任何 [httpGet] 或 [HttpPost]:-

Public ActionResult TestMethod(int I =0)

所以我认为这个动作方法将被定义为 Get 动作方法,如果我按照 “POST http://severname/test/TestMethod?i=1” 发送 Posr 请求,将无法访问。

但是,当我没有指定任何 http 方法时,似乎我的操作方法可用于 Post 和 Get 请求。所以我知道 HttpGet 是默认的,但似乎不是这样?或者我错过了一些关于 httpGet 是默认含义的内容? 有人可以建议吗? 谢谢

【问题讨论】:

    标签: asp.net asp.net-mvc asp.net-mvc-4 http


    【解决方案1】:

    据我所知,默认情况下它接受两种类型的请求,无论是 GET 还是 POST。但是当一个动作方法用 [httpGet] 或 [httpPost] 属性修饰时,动作方法只接受那些由属性定义的请求方法。

    【讨论】:

    • 所以不指定任何东西会使操作方法对GET和POST都可用?
    • 没错,john,如果你没有在 action 方法上定义任何属性,那么它同时接受 GET 和 POST
    • 当然假设您不添加一个而不添加另一个。例如,如果您有相同的操作名称,一个没有属性,另一个有[HttpPost],那么没有属性的一个是隐式 GET。
    • @ChrisPratt 是的,这正是另一个有效点,假设我定义了一个操作方法而不指定它是 Get 还是 Post,然后我定义了另一个具有相同名称的操作方法并将其定义为后操作方法。然后 ley 说我调用以下“POST Http /actionmethodname/”,那么将调用哪一个?是什么支配了这个?这是路由系统的责任吗?谢谢
    • @John 肯定会调用 post 操作方法。我认为这是控制器工厂的责任。
    猜你喜欢
    • 2013-05-29
    • 2021-12-26
    • 2012-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-26
    相关资源
    最近更新 更多