我想让我的基本网址去一个特定类别的在线商店(一个NopCommerce在线商店,如果这是有区别的)。该类别的网址为:http://myUrl.com/c/6
在阅读了一些帖子,包括Scott Gutherie的帖子about MVC routing之后,我想我可以在我的Global.ascx.cs文件中添加以下代码:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
//register custom routes (plugins, etc)
var routePublisher = EngineContext.Current.Resolve<IRoutePublisher>();
routePublisher.RegisterRoutes(routes);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Catalog", action = "Category", id = 6 },
new[] { "Nop.Web.Controllers" }
);
}
但这似乎并不管用。我怎样才能完成我想要做的事情呢?
我几乎没有使用MVC的经验,所以如果有任何不合理的地方,我道歉。
发布于 2011-12-12 14:10:08
看起来最有趣的部分在nopcommerce源代码中。默认路由注册为
routes.MapLocalizedRoute("HomePage",
"",
new { controller = "Home", action = "Index"},
new[] { "Nop.Web.Controllers" });
基本上,您需要先注册默认路由,然后再添加//register custom routes
注释。应该看起来像这样:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Catalog", action = "Category", id = 6 },
new[] { "Nop.Web.Controllers" }
);
routes.MapRoute(
"CustomHome", // Route name
"", // URL with parameters
new { controller = "Catalog", action = "Category", id = 6 },
new[] { "Nop.Web.Controllers" }
);
//register custom routes (plugins, etc)
var routePublisher = EngineContext.Current.Resolve<IRoutePublisher>();
routePublisher.RegisterRoutes(routes);
}
第一条路线可能甚至不是必需的。我没有把握。从来没有和非商业合作过。
发布于 2012-10-03 18:23:08
为了避免将来与NopCommerce中的更新冲突,我将在我的主题文件夹中创建一个新的RouteProvider.cs,如下所示:
~/Themes/MyTheme/Infrastructure/RouteProvider.cs
然后将此代码放入:
namespace Nop.Web.Themes.MyTheme.Infrastructure
{
public class RouteProvider : IRouteProvider
{
public void RegisterRoutes(RouteCollection routes)
{
routes.MapLocalizedRoute("CustomHome",
"",
new { controller = "Catalog", action = "Category", Id = 6 },
new[] { "Nop.Web.Controllers" });
}
public int Priority
{
get
{
return 10;
}
}
}
发布于 2011-12-12 14:08:28
您是否尝试过:
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapRoute(
"Default", // Route name
"Catalog/Category/6"
);
}
https://stackoverflow.com/questions/8470416
复制相似问题