如何在asp.net中配置我的route.config文件以实现如下所述的URL?

时间:2016-09-04 17:23:55

标签: c# asp.net-mvc routing

我有一个名为product的控制器,在该控制器中我有一个名为ActionResult的{​​{1}}。提到ProductDetails将特定产品值传递给视图,然后我得到ActionResult,如下所示:

URL

我想要的是,我想将https://localhost:44304/Product/ProductDetails?ProductID=1 的最后一部分替换为产品名称本身,如下所示:

?ProductID=1

任何想法,请帮助。

修改

这是当前的路线配置。

https://localhost:44304/Product/ProductDetails?LamborghiniVeyron

1 个答案:

答案 0 :(得分:1)

你有一些选择:

首先让我们假设以下网址:

https://localhost:44304/Product/ProductDetails/LamborghiniVeyron
//                         |           |                |
//                    controller     action            id

请注意,我省略了?部分,并将名称作为id。

这与您的默认路线相关:

 routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", 
                                            id = UrlParameter.Optional }
        );

我的猜测是(暂时没有这样做;-))当你在控制器中定义一个动作时,如下所示,它会起作用。

public ProductController : Controller
{
     public ActionResult ProductDetails(string id) //be advised: string!
     {
          //id contains LamborghiniVeyron
          //you can use this in your query
          return View();
     }
}

工作原理:路由配置定义您的路由,其中​​定义了控制器,操作和ID。如果您的参数被调用id,即使您使用名称,模型绑定器也会绑定到此参数。

或者,您可以重新定义路线配置,将参数重命名为name或类似的东西。当心,这可能会导致一些讨厌的小错误。