asp.net MVC默认动作不在区域内工作

时间:2017-11-15 23:37:38

标签: asp.net-mvc-5 url-routing asp.net-mvc-routing

我有一个项目,其中声明了一个设置区域,并且只要我明确包含“/ Index”操作,该URL就会起作用。问题是当我使用RedirectToAction(“Index”)时,它从URL中排除了“/ Index”,我得到了404 Page Not Found。网址是:

http://localhost:40078/Setup/Facility/Index - 作品
http://localhost:40078/Setup/Facility/ - 404(有或没有尾随/)

RouteConfig:

    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.MapMvcAttributeRoutes();

        AreaRegistration.RegisterAllAreas();

        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
            namespaces: new[] { "T.C.MVCWeb.Controllers" }
        );
    }

SetupAreaRegistration:

public class SetupAreaRegistration : AreaRegistration
{
    public override string AreaName
    {
        get
        {
            return "Setup";
        }
    }

    public override void RegisterArea(AreaRegistrationContext context)
    {
        context.MapRoute(
            "Setup_default",
            "Setup/{controller}/{action}/{id}",
            defaults: new { action = "Index", id = UrlParameter.Optional },
            namespaces: new[] { "T.C.MVCWeb.Areas.Setup.Controllers" }
        );
    }
}

请求控制器

namespace T.C.MVCWeb.Areas.Setup.Controllers
{
    public class FacilityController : Controller
    {
        // GET: FacilitySetup
        public ActionResult Index()
        {
            ...
        }
    }
}

我添加了Phil Haack的RouteDebugger并且可以看到404请求认为“设置”是控制器,但是我不明白为什么,输出的其余部分让我感到困惑而不是它的帮助。

1 个答案:

答案 0 :(得分:0)

感谢NightOwn888的评论,我找到了一个通过属性声明的路线。违规路由属性声明为Setup / {action},旨在允许区域URL本身http://localhost:40078/Setup/映射到SetupController。