0

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

样本数据

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

4

2 回答 2

1

您可以创建这条路线:

routes.MapRoute("Product", "products/{productName}", 
    new {controller = "products", action="index"});

这条路线说:

当请求带有与模式匹配的 URL 时:“products/{productName}”(例如http://www.example.com/products/apple),将其传递给“ProductsController”中的“index”操作处理和传递由 {productName} 占位符指示的 URL 段,作为名为“productName”的参数传递给该操作。

那么你的行动将是:

[HttpGet]
public ActionResult Index(string productName) {
    // Lookup product from DB

    // do stuff
    var viewModel = ...;
    return View(viewModel);
}

因此,当对 products/apple 的请求进入时,“apple”作为 productName 参数传递到 Index 操作中。

于 2013-08-20T14:07:04.647 回答
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用于从数据库中检索产品。您可以根据您的模型进行修改。

于 2013-08-20T13:37:45.073 回答