首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么只根据参数的类型和数量来调用MVC4 ApiControllers的方法?

为什么只根据参数的类型和数量来调用MVC4 ApiControllers的方法?
EN

Stack Overflow用户
提问于 2012-08-27 10:21:03
回答 1查看 905关注 0票数 0

我是MVC的新手,我想我的困惑超出了这个问题的标题,但对于初学者来说:

代码语言:javascript
运行
复制
public class TestController : ApiController
{
    [HttpPost]
    public bool ReceiveHunk(Alterity.Models.Async.HunkDTO hunk)
    {
        return true;
    }

    [HttpPost]
    public bool A(int x) { return false; }
    [HttpPost]
    public bool B(int x) { return true; }
}

我不能将我的选择命名为A或B,因为URL似乎只路由到(这是正确的术语吗?)控制器,并根据参数选择方法。因为我在两个方法上有一个(int ),它不知道调用哪一个。当我这样做时,我的困惑加剧了:

代码语言:javascript
运行
复制
$.ajax({
    cache: false,
    type: "POST",
    url: ApiLocation + 'Test',
    contentType: 'application/json',
    dataType: "json",
    data: JSON.stringify(5),
    success: function (response) { }
});

它仍然使用ReceiveHunk方法,块为空。如果我注释掉B,仍然会调用ReceiveHunk。这与我使用JSON而不是表单url编码的事实有关吗?对于每个具有相同签名的方法,我必须有一个单独的ApiController吗?有没有办法配置路由(或其他什么)使URL包含方法名称?常规的控制器在URL中包含方法名称,为什么ApiController不包含方法名称呢?此外,如果我更改A或B参数为零,我只会得到一个内部服务器错误(500),没有任何方法被调用,也没有异常。任何有助于澄清这一点的信息都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-27 15:14:48

这只是ASP.NET Web API的默认路由约定,有关如何配置ASP.NET Web API路由(并在路由中包含操作名称)的更多详细信息,请阅读以下问题/答案:

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12135570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档