继续MVC区域404错误。在结束时

时间:2014-11-18 22:37:59

标签: c# asp.net-mvc

[EDITED]根据论坛成员的建议编辑代码和解决方案。我已经更正了控制器的名称。这是不正确的。更正的名称显示在更新的解决方案文件快照中。我收到了一个新错误。新错误显示在更新的快照中。它仍然是404-typpe错误。

至于“发布你的路由编辑”类型的评论,请注意Visual Studio为我完成所有连线的原始声明。我的理解是,如果我右键单击并从IDE中添加控制器,视图等,我不需要进入并在后台进行额外的连接。这似乎打败了易于实现的界面的整个目的。如果我误解了,请纠正我。谢谢。[结束编辑]

我之前曾要求帮助解决这个问题,没有人能够解决。我重新整理了解决方案,删除了所有相关内容并重新开始,希望能解决问题。我还是卡住了。根据我在MVC上读到的所有内容,这是一件非常简单的事情,但我已经在水中死了一个多星期。希望对此有所帮助。我重新编写的代码如下所示。我看过这些论坛中报告的类似错误,但没有找到任何帮助。

请注意,所有的连线完全由Visual Studio完成:除了向控制器添加Action方法之外,我没有在幕后修改任何生成的代码。换句话说,所有内容都是通过在VS中右键单击并选择“添加”并按照视图,控制器等提示生成的。

我在一个区域“UserAccount”中有一个视图,它使用Html.ActionLink()生成指向另一个区域中的视图的链接,“DocumentUploaderNew”。下面是标记的屏幕快照。当我点击IE中的渲染按钮时,我收到一个看似“404”错误的错误。视图就在那里。

这让GOT成为一个令人尴尬的简单回答。我准备好吃一些不起眼的馅饼。这是什么???

The updated solution The Html.ActionLink() call The new controller code The new error

3 个答案:

答案 0 :(得分:6)

那是因为您的控制器实际上名为FileUpload,但您尝试使用控制器名称FileUploaderNew(看起来您对操作和控制器名称感到困惑)。

试试这个:

@Html.ActionLink("Upload New", "FileUploaderNew", new { controller = "FileUpload", area = "DocumentUploaderNew" }, new { @class = "btn btn-info" })

答案 1 :(得分:2)

这是失败的原因是因为您的视图FileUploaderNew.cshtml位于Views文件夹的根目录而不是文件夹本身(具有控制器名称或共享视图文件夹的文件夹)。如果您查看MVC在错误屏幕截图中检查的路径,您可以看到它永远不会检查路径~/Areas/DocumentUploaderNew/Views/FileUploaderNew.cshtml

你可以做很多修复来解决这个问题(选择一个,而不是全部三个)。

  1. 在名为FileUploaderNew的Views文件夹中创建一个文件夹,并将FileUploaderNew.cshtml文件移动到该文件夹​​中(基本上,您在views文件夹中创建一个子文件夹,其名称为匹配的控制器。将从该控制器返回视图时查找该文件夹。)
  2. FileUploaderNew.cshtml文件移动到Views文件夹内的Shared文件夹中(您可以在截图中看到它)。
  3. 在致电Return View()时确切指定视图的位置:
  4. return View("~/Areas/DocumentUploaderNew/Views/FileUploaderNew.cshtml");
    

答案 2 :(得分:0)

根据您的路线,它可能是

@Html.ActionLink("Upload New", "FileUploaderNew", new { controller = "FileUpload/FileUploaderNew"}, new { @class = "btn btn-info" })

@Html.ActionLink("Upload New", "FileUploaderNew", new { controller = "DocumentUploader/Controllers/FileUpload/FileUploaderNew"}, new { @class = "btn btn-info" })

jist是你必须发布到控制器的路径(而不是名称),当你不能发现它时,它就无法找到它。你得到一个404.在一个默认的MVC文件结构中,我相信这是自动的(控制器目录中的控制器自动映射没有路径),但这不是你的文件结构。

另外,我回答这个从未使用过区域的问题,不确定这些是否会影响到等式中,但是快速阅读似乎表明他们更多的是锁定路径而不是找到它们。