我希望有人可以直接解决我与MVC领域的问题。我知道之前已经问过这个问题,但我无法在代码中看到错误。在我继承的Intranet应用程序中,我在现有的Administration Area控制器和相应的View中创建了另一个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路由)之前,在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错误?
谢谢!
答案 0 :(得分:0)
您是否可以检查在部署的IIS上是否创建了“Regions”文件夹?
答案 1 :(得分:0)
我不明白为什么@ Html.ActionLink不起作用。但为了保持事物的发展,我使用了另一种链接:
@Html.RouteLink("All Current Attributes", "AllCurrentAttributes", "RA")
Chad Moran在此StackOverflow网址上简洁地解释了这两种链接之间的区别:
What's the difference between RouteLink and ActionLink in ASP.NET MVC?
使用@RoutLink我可以指定路线,而不是依赖路线的模式匹配。