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

M Z*_*tra 4 c# asp.net-mvc asp.net-mvc-routing

问题和标题一样简单。

是否有可能有一条看起来像这样的路线:{controller}/{id}/{action}

这就是我现在的代码(只是一个简单的函数)(device是我的控制器):

[HttpGet]
[Route("Device/{id}/IsValid")]
public bool IsValid(int id) {
    return true;
}
Run Code Online (Sandbox Code Playgroud)

但是当我转到以下 URL 时,浏览器说它找不到该页面:localhost/device/2/IsValid

当我尝试这个 URL 时,它工作得很好: localhost/device/IsValid/2

那么,是否可以使用localhost/device/2/IsValid代替默认路由localhost/device/IsValid/2?以及如何做到这一点?

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

Nko*_*osi 5

您正在使用属性路由。确保启用属性路由。

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
    }
}
Run Code Online (Sandbox Code Playgroud)

在控制器中

[RoutePrefix("device")]
public class DeviceController : Controller {
    //GET device/2/isvalid
    [HttpGet]
    [Route("{id:int}/IsValid")]
    public bool IsValid(int id) {
        return true;
    }
}
Run Code Online (Sandbox Code Playgroud)