繁体   English   中英

MVC区域和“找不到404资源”错误

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM