首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在MVC应用上设置默认页面?

如何在MVC应用上设置默认页面?
EN

Stack Overflow用户
提问于 2011-12-12 13:51:19
回答 3查看 58.6K关注 0票数 18

我想让我的基本网址去一个特定类别的在线商店(一个NopCommerce在线商店,如果这是有区别的)。该类别的网址为:http://myUrl.com/c/6

在阅读了一些帖子,包括Scott Gutherie的帖子about MVC routing之后,我想我可以在我的Global.ascx.cs文件中添加以下代码:

代码语言:javascript
复制
    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的经验,所以如果有任何不合理的地方,我道歉。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-12-12 14:10:08

看起来最有趣的部分在nopcommerce源代码中。默认路由注册为

代码语言:javascript
复制
    routes.MapLocalizedRoute("HomePage",
                    "",
                    new { controller = "Home", action = "Index"},
                    new[] { "Nop.Web.Controllers" });

基本上,您需要先注册默认路由,然后再添加//register custom routes注释。应该看起来像这样:

代码语言:javascript
复制
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);


}

第一条路线可能甚至不是必需的。我没有把握。从来没有和非商业合作过。

票数 14
EN

Stack Overflow用户

发布于 2012-10-03 18:23:08

为了避免将来与NopCommerce中的更新冲突,我将在我的主题文件夹中创建一个新的RouteProvider.cs,如下所示:

代码语言:javascript
复制
~/Themes/MyTheme/Infrastructure/RouteProvider.cs

然后将此代码放入:

代码语言:javascript
复制
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;
        }
    }
}
票数 1
EN

Stack Overflow用户

发布于 2011-12-12 14:08:28

您是否尝试过:

代码语言:javascript
复制
public static void RegisterRoutes(RouteCollection routes)
{
    routes.MapRoute(
            "Default", // Route name
            "Catalog/Category/6"
    );
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8470416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档