Как установить страницу по умолчанию в приложении MVC?
Я хотел бы, чтобы мой базовый URL-адрес перешел в определенную категорию интернет-магазина (онлайн-магазин NopCommerce, если это имеет значение). URL категории: http://myUrl.com/c/6
После прочтения нескольких сообщений, включая сообщение Scott Gutherie о маршрутизации MVC, я подумал, что могу просто добавить следующий код в файл 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, поэтому я приношу свои извинения, если это не имеет смысла.
Ответы
Ответ 1
выглядит как наиболее интересные биты в исходном коде 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);
}
первый маршрут может даже не понадобиться. я не уверен. никогда не работал с nopcommerce.
Ответ 2
Чтобы избежать каких-либо конфликтов с обновлениями в 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;
}
}
}
Ответ 3
Вы пробовали:
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapRoute(
"Default", // Route name
"Catalog/Category/6"
);
}
Ответ 4
Попробуйте просто написать это в методе RegisterRoutes
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 } // Parameter defaults
);
}
он должен установить вашу страницу по умолчанию из /Catalog/Category/ 6
Я не понимаю, зачем вы пишете эту строку new[] { "Nop.Web.Controllers" }