我有来自MySQL表的以下示例数据。
我的问题是在我的MVC 4项目中如何才能使路由工作,以便用户访问URL www.mydomain.com/products/apples/我希望调用实际上是www.mydomain的视图.com / products / index / 1,我该如何实现?
答案 0 :(得分:1)
你可以创建这条路线:
routes.MapRoute("Product", "products/{productName}",
new {controller = "products", action="index"});
这条路线说:
当请求带有匹配模式的URL:“products / {productName}”(例如http://www.example.com/products/apple)时,将其传递给“ProductsController”中的“index”操作以处理并传递由{productName}占位符指示的网址段,作为名为“productName”的参数执行该操作。
然后你的行动将是:
[HttpGet]
public ActionResult Index(string productName) {
// Lookup product from DB
// do stuff
var viewModel = ...;
return View(viewModel);
}
因此,当产品/ apple的请求进入时,“apple”会作为productName参数传递给Index操作。
答案 1 :(得分:0)
在默认路由表达式之前将代码放在RouteConfig.cs
中。
foreach (var item in _context.products)
{
routes.MapRoute(
item.Url,
"products/" + item.Url,
new { controller = "products", action = "index", @id = item.ProductId }
);
}
以上_context.products
用于从数据库中检索产品。您可以根据您的模型进行修改。