Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 如何设置控制器的默认操作?_Asp.net Mvc_Routing - Fatal编程技术网

Asp.net mvc 如何设置控制器的默认操作?

Asp.net mvc 如何设置控制器的默认操作?,asp.net-mvc,routing,Asp.net Mvc,Routing,所以我有两个控制器: [AllowCrossSiteJson] public class ItemController : ApiController { [HttpGet] public LinkedList<Object> FindItem([FromUri]ItemQuery query) { .... } } 项目控制器工作,但子DEP不工作!为什么呢 这是我的网站配置: public static void Register

所以我有两个控制器:

[AllowCrossSiteJson]
public class ItemController : ApiController {
    [HttpGet]
    public LinkedList<Object> FindItem([FromUri]ItemQuery query) {
        ....
    }
}
项目控制器工作,但子DEP不工作!为什么呢

这是我的网站配置:

    public static void Register(HttpConfiguration config) {
        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
        config.Routes.MapHttpRoute(
            name: "withAction",
            routeTemplate: "api/{controller}/{action}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
    }
我得到的错误是:

{"Message":"No HTTP resource was found that matches the request URI 'http://localhost:43751/api/SubDep'.","MessageDetail":"No action was found on the controller 'SubDep' that matches the request."}

奖金问题:

ASP.NET MVC如何知道我试图点击:

http://localhost:43751/api/Item

它会自动转到FindItem操作吗?这对我来说就像是纯粹的魔法

当您尝试调用
FindSubDep
操作时,您的查询字符串应该如下所示:

http://localhost:43751/api/SubDep/1

关于奖金问题。在您的情况下,当您发出GET请求时,由于HTTP动词[GET],它会执行正确的操作

http://localhost:43751/api/Item

它将在Item controller上找到一个具有[HttpGet]属性的操作。

您完全正确,这就是原因。我将参数设置为可选,并且它正确地调用了函数。
http://localhost:43751/api/SubDep/1
http://localhost:43751/api/Item