ASPMVCRoutingNoAction我想在url中省略这个action,因为我觉得这不是一个restful的方法。默认路由应该是:“{controller}/{id}”,然后调用与使用的HTTP方法对应的操作。例如,我正在像这样装饰PUT操作:[HttpPut]publicActionResultChange(){returnView();然而,当我这样说时,我得到了404。所以我做错了什么,有人试过这个吗?我正在使用MVC4测试版。这就是我在设置路由时所做的:routes.MapRoute(name:"Default",url:"{controller}/{id}",defaults:new{controller="Home",action="Index",id=RouteParameter.Optional});[HttpPut][ActionName("Index")]publicActionResultChange(){returnView();MVC中的动作方法选择器只允许您对同名方法最多有2个动作方法重载。我知道您的出发点,只想将{controller}/{id}作为URL路径,但您可能采用了错误的方式。如果您的控制器只有2个操作方法,比如1个用于GET,1个用于PUT,那么您可以像上面那样命名两个操作索引,或者像这样:如果您的控制器上有两个以上的方法,您可以为其他操作创建新的自定义路由。您的控制器可能如下所示:[HttpPut]publicActionResultPut(){returnView();}[HttpPost]publicActionResultPost(){returnView();}[HttpGet]publicActionResultGet(){returnView();}[HttpDelete]publicActionResultDelete(){returnView();}...如果你的global.asax看起来像这样:routes.MapRoute(null,"{controller}/{id}",//URLwithparametersnew{controller="Home",action="Get",id=UrlParameter.Optional},new{httpMethod=newHttpMethodConstraint("GET")});routes.MapRoute(null,"{controller}/{id}",//带参数的URLnew{controller="Home",action="Put",id=UrlParameter.Optional},new{httpMethod=newHttpMethodConstraint("放”)});routes.MapRoute(null,"{controller}",//带参数的URLnew{controller="Home",action="Post",id=UrlParameter.Optional},new{httpMethod=newHttpMethodConstraint("POST")});routes.MapRoute(null,"{controller}/{id}",//带参数的URLnew{controller="Home",action="删除",id=UrlParameter.Optional},new{httpMethod=newHttpMethodConstraint("DELETE")});routes.MapRoute("Default",//路由名称"{controller}/{id}",//带参数的URLnew{controller="Home",action="Index",id=UrlParameter.Optional});...这4个新路由都具有相同的URL模式,除了POST(因为你应该POST到集合但PUT到特定的id)但是,不同的HttpMethodConstraints只告诉MVC路由匹配与httpMethod对应的路由。所以当有人向/MyItems/6发送DELETE时,MVC不会匹配前3个路由,但会匹配第4个。同样,如果有人向/MyItems/13发送PUT,MVC将不会匹配前2个路由,但会匹配第3个。一旦MVC匹配到路由,它将使用该路由定义的默认操作。因此,当有人发送DELETE时,它会映射到控制器上的Delete方法。考虑使用AttributeRoutingnuget包。它支持宁静的约定。如果您使用的是MVC4Beta,为什么不使用WebAPI?除此之外,我认为路由引擎不会查找各种HTTP动词……所以,您有点卡住了。除非您为所有这些方法重载一个Action方法并执行此操作:",action="Restifier",id=UrlParameter.Optional});本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
