C# 是否可以在url中的操作之前定义参数
这个问题和标题一样简单 是否可能有这样的路由:C# 是否可以在url中的操作之前定义参数,c#,asp.net-mvc,asp.net-mvc-routing,C#,Asp.net Mvc,Asp.net Mvc Routing,这个问题和标题一样简单 是否可能有这样的路由:{controller}/{id}/{action} 这就是我现在的代码(只是一个简单的函数)(设备是我的控制器): 但是当我转到下面的URL时,浏览器说它找不到该页面:localhost/device/2/IsValid 当我尝试这个URL时,它工作得很好:localhost/device/IsValid/2 那么,是否可以使用localhost/device/2/IsValid而不是默认路由localhost/device/IsValid/2?如
{controller}/{id}/{action}
这就是我现在的代码(只是一个简单的函数)(设备
是我的控制器):
但是当我转到下面的URL时,浏览器说它找不到该页面:localhost/device/2/IsValid
当我尝试这个URL时,它工作得很好:localhost/device/IsValid/2
那么,是否可以使用localhost/device/2/IsValid
而不是默认路由localhost/device/IsValid/2
?如何做到这一点
请随时询问更多信息!提前谢谢 在
RoutingConfig
config.Routes.MapHttpRoute(
"RouteName",
"{controller}/{id}/{action}"
);
您正在使用属性路由。确保启用属性路由 对于MVCRouteConfig.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;
}
}
您需要更改RouteConfig文件中的代码。public static void registerOutes(RouteCollection routes){routes.IgnoreRoute(“{resource}.axd/{*pathInfo}”);routes.MapRoute(“默认值”,//路由名称“{controller}/{id}/{action}”,//带有参数new{controller=“Home”,action=“Index”,id=”“}//参数默认值);}@RahulChavan什么是
th
?我必须在哪里添加它?App_startIs中的RouteConfig文件这对于web api或普通mvcIt也可以用于web api感谢您的帮助!:但是,为什么“:int
”?我为什么要这样做?这是基于您的样本的约束。它也可以是bool
或long
。这是为了确保url中使用的类型符合您想要的类型。你不必这么做。阅读参考文章。
[RoutePrefix("device")]
public class DeviceController : Controller {
//GET device/2/isvalid
[HttpGet]
[Route("{id:int}/IsValid")]
public bool IsValid(int id) {
return true;
}
}