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