如何在URL中没有操作的情况下获取路由

时间:2017-07-25 14:19:55

标签: c# asp.net-mvc

我希望我的路线看起来像:

/product/123

我有一个行动GET,但我不想在网址中找到它,目前是:

/product/get/123

如何获得这个?

的Global.asax.cs

RouteConfig.RegisterRoutes(RouteTable.Routes);

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    routes.MapRoute(
            "Default",
            "{controller}/{action}/{id}",
            new { controller = "Home", action = "Index", id = UrlParameter.Optional },
            new[] { "MyApp.Web.Controllers" }
        );    
}

2 个答案:

答案 0 :(得分:1)

您可以使用Route属性来定义您的路径:

[Route("product")]
public class ProductController {

    [Route("{productId}"]
    public ActionResult Get(int productId) {
        // your code here
    }
}

为您提供" / product / {productId}"的完整路线定义。这是" / product / 123"在你的情况下。更多细节:https://blogs.msdn.microsoft.com/webdev/2013/10/17/attribute-routing-in-asp-net-mvc-5/

答案 1 :(得分:1)

在默认路由之前的routes.MapRoute中添加此代码。

routes.MapRoute(
    name: "Product",
    url: "Product/{id}",
    defaults: new { controller = "product", action = "get"}