【问题标题】:Same Controller Name in different namespaces不同命名空间中的相同控制器名称
【发布时间】:2014-12-18 17:07:02
【问题描述】:

我的文件结构设置为:

Controllers/Requestor/RequestorHomeController (Namespace: Proj.Presentation.Controllers.Requestor)
Controllers/Approver/ApproverHomeController (Namespace: Proj.Presentation.Controllers.Approver)

我的路线如下:

routes.MapRoute(
            name: "PrependRequestor",
            url: "requestor/{controller}/{action}/{id}",
            defaults: new { controller = "RequestorHome", action = "Index", id = UrlParameter.Optional },
            namespaces: new string[] { "Proj.Presentation.Controllers.Requestor" }
        );

routes.MapRoute(
            name: "PrependApprover",
            url: "approver/{controller}/{action}/{id}",
            defaults: new { controller = "ApproverHome", action = "Index", id = UrlParameter.Optional },
            namespaces: new string[] { "Proj.Presentation.Controllers.Approver" }
        );

我没有收到任何错误,但是当我转到 Approver/ApproverHomeController/Index 时,第一条路线被击中,因为 URL 是 requestor/approverhome。如果它在不同的命名空间中,不应该忽略第一个控制器吗?关于我可以做些什么来达到第二条路线的任何建议?

【问题讨论】:

    标签: asp.net-mvc-4 routes


    【解决方案1】:

    路线

    Approver/ApproverHomeController/Index
    

    不起作用,因为您必须在 url 中省略“控制器”。

    它将作为

    Approver/ApproverHome/Index
    

    您还必须通过

    到达第二条路线
    approver
    

    因为你有控制器和动作部分的默认值。

    更新:

    如果你想从不同命名空间中的控制器进行重定向,你应该使用

    return RedirectToAction("index", "approverhome", new { area = "approver" } );
    

    【讨论】:

    • 所以 URL 应该看起来像 requestor/{action}/{id}approver/{action}/{id}?
    • 不,请求者/{不带“控制器”部分的控制器名称}/{action}/{id} 编辑了答案以澄清...
    • 很抱歉,我没有正确理解您的意思,或者这不起作用。您能否在答案中输入完整的 routes.MapRoute 以确保它是我现在所拥有的。
    • 我实际上并没有输入“Approver/ApproverHomeController/Index”。我有一个RedirectToAction("index", "approverhome"),这使网址看起来像requestor/approverhome
    • 在这种情况下,我认为您的问题是您必须在 RedirectToAction 中指定区域。见this
    猜你喜欢
    • 2014-12-13
    • 1970-01-01
    • 2017-10-16
    • 1970-01-01
    • 2015-03-12
    • 2017-05-18
    • 1970-01-01
    • 2012-05-02
    • 1970-01-01
    相关资源
    最近更新 更多