2014-05-11 45 views
0

我有一家网店。我有一些控制器和视图匹配/管理/索引,/管理/ ShowProducts等所有的东西。如何创建特定的网址路线

我希望能够做一个“自定义”链接,始终是一样的,它应该是在我的域的根,是这样的:

www.mydomain.com/shop/myproduct

如果店铺是静态的并且没有变化,并且“我的产品”根据每个产品而变化(它实际上是一个ID)。如何在没有在默认方式的URL中显示控制器方法的情况下执行此操作?

这是一条新路线吗?或者我可以在控制器上做些什么?

回答

0

默认的MVC路线几乎已经完成了。

看那控制器=和行动=

因此,让一个网址,如:

/店/ {ID}

控制器= ShoppingController,行动=店

注意我加假设用户不必指定产品,并且您得到一些字符串来告诉您这是默认产品,您也可以使用UrlParameter.Optional,并且您将为ID为

你的控制器看起来像:

public class ShoppingController : Controller 
{ 
    public ActionResult Shop(string id) 
    { 
     if (string.IsNullOrEmpty(id) || string.Equals(id, "DefaultProduct", StringComparison.OrdinalIgnoreCase)) 
     { 
      // Do something to please the user 
     } 

     // Get product by id 

     return View(); 
    } 
} 

和路由代码:

public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

     routes.MapRoute(
      name: "Shopping", 
      url: "shop/{id}", 
      defaults: new { controller = "Shopping", action = "Shop" , id = "DefaultProduct" } 
     ); 

     routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
     ); 
    }