【问题标题】:How can you have both PUT and POST routing attributes on a controller action?如何在控制器操作上同时拥有 PUT 和 POST 路由属性?
【发布时间】:2014-04-16 14:18:51
【问题描述】:

PUT 和 POST 在 REST 中做的事情非常相似。假设是 POST 意味着 创建一个新条目,而 PUT 意味着 更新现有条目

我一直认为控制器操作方法只能有一个路由属性,但现在我有一种情况,我想要一个方法来响应HttpPost HttpPut .

更新:

尝试了一些变体,如果应用了多个路由属性,则未命中操作。像这些:

[HttpPost]
[HttpPut]
public ActionResult Include(int id, int order, int parent)
{
    return "...some result";
}

[HttpPost, HttpPut]
public ActionResult Include(int id, int order, int parent)
{
    return "...some result";
}

现在的问题是:如何在同一个控制器操作中同时响应 PUT 和 POST 请求?

【问题讨论】:

    标签: asp.net-mvc http-post asp.net-mvc-routing http-put


    【解决方案1】:

    有内置的方法可以做到这一点。使用AcceptVerbsAttribute

    [AcceptVerbs(HttpVerbs.Post | HttpVerbs.Put)]
    public ActionResult Include()
    {
    }
    

    【讨论】:

    • 我以前从未遇到过该属性。测试了它,它很有效。优秀的! :)
    • 其实看源码,HttpPost 和 HttpPut 是AcceptVerbs 的一种快捷方式,使用AcceptVerbsAttribute 实现
    猜你喜欢
    • 2014-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-13
    • 1970-01-01
    • 1970-01-01
    • 2017-06-09
    • 2010-10-25
    相关资源
    最近更新 更多