[英]MVC areas and “404 resource not found” error
我从一个程序员那里继承了一个损坏的MVC应用程序,该程序员在我加入公司之前就离开了公司。 前一位程序员在其最后的操作中,将应用程序重组为Areas(如所附的Solution Explorer快照所示)。 我正在确定这是一件简单的事情,但是我对MVC还是陌生的,这是一件很重要的事情:
标记@ Html.ActionLink()生成的许多链接都可以正常使用,但是有些链接失败,出现“找不到404资源[...]”错误。
这是链接失败的示例:
@Html.ActionLink("Upload Documents", "BlankPageTest", new { controller = "DocumentUpload", area = "Documents" }, new { @class = "btn btn-info" })
...,这是一个有效的链接:
@Html.ActionLink("Edit Questions", "ChangeQuestions", new { controller = "Account", area = "UserAccount" }, new { @class = "btn btn-info" })
这两个链接都位于“ MyAccount.cshtml”视图的标记中,该视图位于“ UserAccount”区域中。 我可以看到的失败链接和有效链接之间的唯一功能差异是,工作链接(ChangeQuestions.cshtml)的资源以视图(MyAccount.cshtml)的形式存在于同一区域中。 但是,由于controller和area都是Html.ActionLink()的参数,因此我看不到MVC会变得混乱。
在“找不到404资源”消息中给出的完整URL为:
/CROMERR.Website/Documents/DocumentUpload/BlankPageTest
我在控制器中有一个针对目标URL的名为“ DocumentUpload”的方法...无法找到任何更明显的方法尝试,以至于我想请一个知识渊博的人。 任何和所有帮助表示赞赏。
DocumentAreaRegistration
包含以下代码:
public override string AreaName
{
get
{
return "Documents";
}
}
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Documents_default",
"Documents/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional });
}
来自您之前提出的问题,您的问题是视图放置在错误的位置,导致404错误。
从DocumentUpload
控制器,您尝试返回视图BlankTestPage.cshtml
。 但是,在查看屏幕快照时, BlankTestPage.cshtml
视图实际上位于“ Views/Documents
文件夹中。 默认情况下,MVC将仅在文件夹Views/ControllerName
(其中控制器名称是试图返回视图的控制器的名称)和Views/Shared
查找。
如果需要从多个控制器引用BlankTestPage.cshtml
,请将其放在“共享”文件夹中。 否则,您需要将该视图从Documents View文件夹移至DocumentUpload视图文件夹(屏幕快照中的空白文件夹)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.