相关疑难解决方法(0)

如何根据接受的HTTP谓词重载ASP.NET MVC操作?

想要为基于REST的API使用相同的URL进行GET/PUT/DELETE/POST,但是当关于Actions的唯一不同之处是它接受哪个HTTP谓词时,它认为它们是重复的!

"Type已经定义了一个名为'Index'的成员,它具有相同的参数类型."

我说的是什么呢?这个只接受GET,这个只接受POST ...应该可以共存吗?

怎么样?

asp.net-mvc action overloading http-verbs

23
推荐指数
2
解决办法
6379
查看次数

ASP.NET MVC AcceptVerbs和注册路由

如果我已经使用[AcceptVerbs(..)]属性修饰了我的动作方法,我是否必须在路线定义中注册HttpVerb约束(当我注册路线时)?

例如.我有这个.

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(FormCollection formCollection)
{ .. }
Run Code Online (Sandbox Code Playgroud)

我是否需要将此添加到引用此操作的路由中,作为约束?

asp.net-mvc routes acceptverbs http-verbs

21
推荐指数
1
解决办法
3万
查看次数

MVC3 REST路由和Http动词

作为我之前的一个问题的结果,我发现了两种在MVC3中处理REST路由的方法.

这是一个后续问题,我试图了解这两种方法之间的事实差异/细微差别.如果可能的话,我正在寻找权威的答案.

方法1:单一路由,在控制器操作上具有操作名称+ Http谓词属性

  1. Global.asax使用指定action参数注册单个路由.

    public override void RegisterArea(AreaRegistrationContext context)
    {
        // actions should handle: GET, POST, PUT, DELETE
        context.MapRoute("Api-SinglePost", "api/posts/{id}", 
            new { controller = "Posts", action = "SinglePost" });
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将两者ActionNameHttpVerb属性应用于控制器操作

    [HttpGet]
    [ActionName("SinglePost")]
    public JsonResult Get(string id)
    {
        return Json(_service.Get(id));
    }
    [HttpDelete]
    [ActionName("SinglePost")]
    public JsonResult Delete(string id)
    {
        return Json(_service.Delete(id));
    }
    [HttpPost]
    [ActionName("SinglePost")]
    public JsonResult Create(Post post)
    {
        return Json(_service.Save(post));
    }
    [HttpPut]
    [ActionName("SinglePost")]
    public JsonResult Update(Post post)
    { …
    Run Code Online (Sandbox Code Playgroud)

c# rest asp.net-mvc routing http

10
推荐指数
1
解决办法
6973
查看次数

标签 统计

asp.net-mvc ×3

http-verbs ×2

acceptverbs ×1

action ×1

c# ×1

http ×1

overloading ×1

rest ×1

routes ×1

routing ×1