从MySQL数据库中MV4路由动态路由

时间:2013-08-20 13:30:39

标签: c# mysql asp.net-mvc-4 asp.net-mvc-routing

我有来自MySQL表的以下示例数据。

Sample data

我的问题是在我的MVC 4项目中如何才能使路由工作,以便用户访问URL www.mydomain.com/products/apples/我希望调用实际上是www.mydomain的视图.com / products / index / 1,我该如何实现?

2 个答案:

答案 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用于从数据库中检索产品。您可以根据您的模型进行修改。