簡體   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