我希望有人可以直接解决我在 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 错误?
谢谢!