【问题标题】:Not able to route to a view under area in MVC Razor无法路由到 MVC Razor 中区域下的视图
【发布时间】:2014-04-10 11:06:53
【问题描述】:

问题陈述:

我正在尝试路由到区域(测试区域)下的登录视图不起作用。

例外:

HTTP 错误 403.14 - 禁止 Web 服务器配置为不列出此目录的内容

最可能的原因: 请求的 URL 没有配置默认文档,服务器上没有启用目录浏览。

如果我路由到区域下的登录视图以外的视图,它可以正常工作

我在路由中做错了什么??

地区:

测试区Registartion.cs

public class TestAreaRegistration : AreaRegistration
    {
        public override string AreaName
        {
            get
            {
                return "Test";
            }
        }

        public override void RegisterArea(AreaRegistrationContext context)
        {
            context.MapRoute(
                "Test_default",
                "Test/{controller}/{action}/{id}",
                new { action = "Index", id = UrlParameter.Optional }
            );
        }
    }

App_Start 中的路由配置:

如果我使用默认路由登录它工作正常,但如果我在测试区域下提供登录视图的路由,它会给出 HTTP 错误 403.14 - 禁止 Web 服务器配置为不列出该目录的内容,为什么? ?

 public class RouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {

            // Default Route for Login
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
            routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Login", action = "Index", id = UrlParameter.Optional }
            );


            //Area View Route for Login
            routes.MapRoute(
            name: "Test",
            url: "Test/{controller}/{action}/{id}",
            defaults: new { controller = "Login", action = "Index", id = UrlParameter.Optional },
            namespaces: new[] { "WebApplication1.Areas.Test.Controllers" }
            );

        }
    }

Global.asax.cs:

 protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();
        WebApiConfig.Register(GlobalConfiguration.Configuration);
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);
        Database.SetInitializer<WebApplication1.Areas.Test.Models.Test_DB>(null);
    }

【问题讨论】:

标签: c# asp.net-mvc razor asp.net-mvc-routing


【解决方案1】:

试试这个:

   routes.MapRoute(
            name: "Test",
            url: "{controller}/{action}/{id}",
            defaults: new {controller = "Login", action = "Index", id = UrlParameter.Optional },
            namespaces: new[] { "WebApplication1.Areas.Test.Controllers" }).DataTokens["area"] = "Test";

【讨论】:

    猜你喜欢
    • 2012-02-17
    • 1970-01-01
    • 2015-06-12
    • 1970-01-01
    • 2013-03-12
    • 1970-01-01
    • 2018-05-20
    • 1970-01-01
    相关资源
    最近更新 更多