【问题标题】:Need similar routing configuration for area as with normal routing configuration需要与普通路由配置类似的区域路由配置
【发布时间】:2012-09-28 04:43:52
【问题描述】:

我正在使用ASP.NET MVC3。我正在尝试配置我的路线,但似乎有冲突的路线。不知道如何解决它,希望有人能指出我正确的方向。

我的网站中有 2 个部分可以查看应用程序。网站的普通用户只能查看他/她的应用程序。并且管理员可以通过管理区域查看所有捕获的应用程序。

可以将注释添加到已经存在的应用程序中。备注只是在申请过程中可以随时获取的附加信息。我希望显示已为这样的应用程序捕获的所有注释:

/Application/1001/Notes
/Administration/Application/1001/Notes

这是我配置路线的方式:

Routes.MapRoute(
     "ApplicationNote",
     "{controller}/{applicationId}/Notes",
     new { controller = "Application", action = "Notes" },
     new { applicationId = @"\d+" },
     new[] { "MyProject.Web.Controllers" });

Routes.MapRoute(
     "AdminApplicationNote",
     "{area}/{controller}/{applicationId}/Notes",
     new { area = "Administration", controller = "Application", action = "Notes" },
     new { applicationId = @"\d+" },
     new[] { "MyProject.Web.Areas.Administration.Controllers" });

为了显示第一个链接(在数据表中的每个应用程序旁边),我的控制器中有以下内容,它将为每条记录生成操作链接:

string actionLinks = string.Empty;
actionLinks += "<a href=\"" + Url.Action("Notes", "Application", new { area = string.Empty, applicationId = application.Id }) + "\">" + "Notes</a>";

我这样显示的第二个链接(来自我的控制器操作,与上面相同):

string actionLinks = string.Empty;
actionLinks = "<a href=\"" + Url.Action("Notes", new { applicationId = application.Id, area = "Administration", controller = "Application" }) + "\">" + "Notes</a>";

第一个配置效果很好:

/Application/1001/Notes

...但第二个不太好。当我将鼠标悬停在第二个配置的链接上时,状态会显示:

/Administration/Application/Notes?applicationId=1001

我在管理区的路由配置上做错了什么?

【问题讨论】:

  • 奇怪。我想知道即使它不在指定的段中,是否遵守 applicationID 约束。你能试试example.org/Administration/Application/Notes 看看运行的是哪个动作吗?
  • @Brendan Vogt 你解决了管理区的路由配置吗?你找到更好的解决方案了吗?

标签: asp.net asp.net-mvc asp.net-mvc-3 asp.net-mvc-4 asp.net-mvc-routing


【解决方案1】:

添加约束区域 = string.Empty

   routes.MapRoute(
        "ApplicationNote",
        "{controller}/{applicationId}/Notes",
        new { controller = "Application", action = "Notes" }, 
        new { applicationId = @"\d+", area = string.Empty }, //<----
        new[] { "MyProject.Web.Controllers" }
   );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-30
    • 1970-01-01
    • 1970-01-01
    • 2016-04-13
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    相关资源
    最近更新 更多