是否可以在url中的操作之前定义参数

时间:2016-03-21 11:32:29

标签: c# asp.net-mvc asp.net-mvc-routing

问题就像标题一样简单。

是否可以使用如下所示的路线:{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?怎么做?

随时询问更多信息!提前谢谢!

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}"
    );