1

我什至不确定我是否知道正确表达这一点的正确术语。我是 MVC 的新手,并且继承了一个部分完成的项目。

该项目使用区域,我对 MVC 和路由的理解不足以解决以下问题:

我有一个站点,例如“www.b2c.com”,并有一个区域“OnlineOrder”控制器“主页”并查看“索引”。我希望访问者在输入网址“ http://www.b2c.com ”时默认转到-> OnlineOrder/Home/Index 网址“ http://www.b2c.com/OnlineOrder/Home/Index “ 工作正常。

我的 RouteConfig 文件包含:

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

            routes.MapRoute(
            "Default_Home", // Route name
            "",        // URL with parameters
            new { controller = "Home", action = "Index" }// Parameter defaults

      );

我在区域的根文件夹中有一个区域注册文件:

public class OnlineOrderAreaRegistration : AreaRegistration
    {
        public override string AreaName
        {
            get
            {
                return "OnlineOrder";
            }
        }

        public override void RegisterArea(AreaRegistrationContext context)
        {
            context.MapRoute(

                        name: "Info",
              url: "OnlineOrder/{controller}/Info/{action}",
              defaults: new { controller = "Home", action = "Index" }
          );
            context.MapRoute(
                name: "Default",
                url: "OnlineOrder/{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            ).DataTokens.Add("areas", "OnlineOrder");


        }
    }

不知道该怎么办。

4

2 回答 2

1

添加到默认路由上方的 RouteConfig.cs 文件或删除默认路由。

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

这将确认您的区域是“在线订单”

public ActionResult Index()
{
    ViewBag.Message = RouteData.Values["area"];

    return View();
}

谢谢

于 2015-05-19T10:18:21.803 回答
0

你有两个可能的选项

  1. 您可以更改默认路线
  2. 在您的家庭控制器的索引操作中执行重定向操作
于 2015-05-19T10:19:00.920 回答