1

我希望有人可以直接解决我在 MVC 领域遇到的问题。我知道之前有人问过这个问题,但我无法在我的代码中看到错误。在我继承的 Intranet 应用程序中,我在现有的管理区域控制器和相应的视图中创建了另一个 ActionResult 方法。

ActionResult AllCurrentAttributes()

当我在 VS 2012 IDE 中操作应用程序时,它不需要任何参数并且可以工作。但是,已部署的应用程序会引发错误:HTTP 404。您要查找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。同一控制器中的其他 ActionResult 方法可以完美运行。

所有其他工作路线都在 AdministrationAreaRegistration.cs 中注册。

public override void RegisterArea(AreaRegistrationContext context)
{
  context.MapRoute(
    "RA",
    "Administration/RA/{raId}",
    new { area = "Administration", controller = "RA", action = "View" },
    new { riskAssessmentId = @"\d+" },
    new[] { "LargeApp.UI.Web.Areas.Administration.Controllers" }
    );

  context.MapRoute(
    "RA Work",
    "Administration/ RA /Work/{raId}",
    new { area = "Administration", controller = " RA ", action = "Work" },
    new { riskAssessmentId = @"\d+" },
    new[] { " LargeApp.UI.Web.Areas.Administration.Controllers" }
    );

  context.MapRoute(
    "All Current Attributes",
    "Administration/ RA /AllCurrentAttributes/",
    new { area = "Administration", controller = " RA ", action = "AllCurrentAttributes" },
    new[] { " LargeApp.UI.Web.Areas.Administration.Controllers" }
    );

  context.MapRoute(
    "Administration Default",
    "Administration/{controller}/{action}/{id}",
    new { area = "Administration", controller = "Home", action = "Index", id = UrlParameter.Optional },
    new[] { " LargeApp.UI.Web.Areas.Administration.Controllers" }
    );
}

Index.cshtml 中的 ActionLink 是为位于管理区域的 Home 控制器创建的视图,如下所示:

@Html.ActionLink("All Current Attributes", "AllCurrentAttributes", "RA")

该视图位于管理区域内的 RA 文件夹中,名为 AllCurrentAttributes.cshtml。Index.cshtml 中引用相同 RA 控制器的其他 ActionLink 可以完美运行。

@Html.ActionLink("Work Rules", "WorkIndex", "RA ")
@Html.Action("List", "RA ") 

在 Global.asax 中,在调用 RegisterRoutes(RouteCollection routes) 之前,在 Application_Start 中调用 AreaRegistration.RegisterAllAreas()。在 RegisterRoutes 中,默认路由代码如下所示:

routes.MapRoute(
    "Default", 
    "{controller}/{action}/{id}", 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional }, 
    new[] { "LargeApp.UI.Web.Controllers" } 
);

有谁知道我如何解决 404 错误?

谢谢!

4

2 回答 2

0

您能否检查您部署的 IIS 上是否创建了“Areas”文件夹?

于 2013-07-19T14:42:37.110 回答
0

我不明白为什么 @Html.ActionLink 不起作用。但是为了让事情继续进行,我使用了另一种链接:

@Html.RouteLink("All Current Attributes", "AllCurrentAttributes", "RA")

Chad Moran 在这个 StackOverflow url 上简洁地解释了这两种类型的链接之间的区别:

ASP.NET MVC 中的 RouteLink 和 ActionLink 有什么区别?

使用 @RoutLink 我可以指定一个路由,而不是依赖于路由的模式匹配。

于 2013-08-26T18:58:52.510 回答