我有一个类似http://mysite.ef.com/mine的网址 。它在内部需要重定向到
http://mysite.ef.com/Product/ViewProduct/2。最后一个参数(即 2)必须从第一个 url 的最后一个参数(在这种情况下,值是“我的”)通过访问数据库来查看它是否有效,如果有效则获取正确的 id。我们如何使用 Url Routing 来完成它。我可以通过使用自定义约束来验证它,但是如何用这个获取的值重写 url。
问候拉加夫
我有一个类似http://mysite.ef.com/mine的网址 。它在内部需要重定向到
http://mysite.ef.com/Product/ViewProduct/2。最后一个参数(即 2)必须从第一个 url 的最后一个参数(在这种情况下,值是“我的”)通过访问数据库来查看它是否有效,如果有效则获取正确的 id。我们如何使用 Url Routing 来完成它。我可以通过使用自定义约束来验证它,但是如何用这个获取的值重写 url。
问候拉加夫
让您的路由配置如下所示:
routes.MapRoute(
name: "ProductRouting",
url: "{id}",
defaults: new { controller = "Product", action = "ProductView", id = UrlParameter.Optional },
namespaces: new[] { "YourApp.Controllers" }
);
但请注意,因为通常的默认路由看起来像这样,并且如果您只传递一个通常仅指定控制器的参数,但在您的情况下它将指定产品 ID。
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Account", action = "Login", id = UrlParameter.Optional },
namespaces: new[] { "YourApp.Controllers" }
);
如果您以某种方式需要它来执行查找并计算出mine
与 product 相对应的内容2
,则您ProductView
ActionMethod
需要接收一个字符串并执行一个简单的查找。