-1

我正在使用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

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

4

1 回答 1

0

添加约束区域 = string.Empty

   routes.MapRoute(
        "ApplicationNote",
        "{controller}/{applicationId}/Notes",
        new { controller = "Application", action = "Notes" }, 
        new { applicationId = @"\d+", area = string.Empty }, //<----
        new[] { "MyProject.Web.Controllers" }
   );
于 2012-10-07T23:02:00.310 回答