问题就像标题一样简单。
是否可以使用如下所示的路线:{controller}/{id}/{action}
?
这就是我现在的代码(只是一个简单的函数)(device
是我的控制器):
[HttpGet]
[Route("Device/{id}/IsValid")]
public bool IsValid(int id) {
return true;
}
但是,当我转到以下网址时,浏览器显示无法找到该网页:localhost/device/2/IsValid
。
当我尝试使用此网址时,它可以正常运行:localhost/device/IsValid/2
那么,是否可以使用localhost/device/2/IsValid
而不是默认路由localhost/device/IsValid/2
?怎么做?
随时询问更多信息!提前谢谢!
答案 0 :(得分:4)
您正在使用属性路由。确保启用属性路由。
Attribute Routing in ASP.NET MVC 5
对于MVC RouteConfig.cs
public class RouteConfig {
public static void RegisterRoutes(RouteCollection routes) {
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapMvcAttributeRoutes();
//...Other code removed for brevity
}
}
在控制器中
[RoutePrefix("device")]
public class DeviceController : Controller {
//GET device/2/isvalid
[HttpGet]
[Route("{id:int}/IsValid")]
public bool IsValid(int id) {
return true;
}
}
答案 1 :(得分:2)
尝试在Default
RoutingConfig
路线之前使用此功能
config.Routes.MapHttpRoute(
"RouteName",
"{controller}/{id}/{action}"
);