我有一个名为product的控制器,在该控制器中我有一个名为ActionResult
的{{1}}。提到ProductDetails
将特定产品值传递给视图,然后我得到ActionResult
,如下所示:
URL
我想要的是,我想将https://localhost:44304/Product/ProductDetails?ProductID=1
的最后一部分替换为产品名称本身,如下所示:
?ProductID=1
任何想法,请帮助。
修改
这是当前的路线配置。
https://localhost:44304/Product/ProductDetails?LamborghiniVeyron
答案 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
或类似的东西。当心,这可能会导致一些讨厌的小错误。