[EDITED]根据论坛成员的建议编辑代码和解决方案。我已经更正了控制器的名称。这是不正确的。更正的名称显示在更新的解决方案文件快照中。我收到了一个新错误。新错误显示在更新的快照中。它仍然是404-typpe错误。
至于“发布你的路由编辑”类型的评论,请注意Visual Studio为我完成所有连线的原始声明。我的理解是,如果我右键单击并从IDE中添加控制器,视图等,我不需要进入并在后台进行额外的连接。这似乎打败了易于实现的界面的整个目的。如果我误解了,请纠正我。谢谢。[结束编辑]
我之前曾要求帮助解决这个问题,没有人能够解决。我重新整理了解决方案,删除了所有相关内容并重新开始,希望能解决问题。我还是卡住了。根据我在MVC上读到的所有内容,这是一件非常简单的事情,但我已经在水中死了一个多星期。希望对此有所帮助。我重新编写的代码如下所示。我看过这些论坛中报告的类似错误,但没有找到任何帮助。
请注意,所有的连线完全由Visual Studio完成:除了向控制器添加Action方法之外,我没有在幕后修改任何生成的代码。换句话说,所有内容都是通过在VS中右键单击并选择“添加”并按照视图,控制器等提示生成的。
我在一个区域“UserAccount”中有一个视图,它使用Html.ActionLink()生成指向另一个区域中的视图的链接,“DocumentUploaderNew”。下面是标记的屏幕快照。当我点击IE中的渲染按钮时,我收到一个看似“404”错误的错误。视图就在那里。
这让GOT成为一个令人尴尬的简单回答。我准备好吃一些不起眼的馅饼。这是什么???
答案 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
你可以做很多修复来解决这个问题(选择一个,而不是全部三个)。
FileUploaderNew
的Views文件夹中创建一个文件夹,并将FileUploaderNew.cshtml
文件移动到该文件夹中(基本上,您在views文件夹中创建一个子文件夹,其名称为匹配的控制器。将从该控制器返回视图时查找该文件夹。)FileUploaderNew.cshtml
文件移动到Views文件夹内的Shared文件夹中(您可以在截图中看到它)。Return View()
时确切指定视图的位置:的
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文件结构中,我相信这是自动的(控制器目录中的控制器自动映射没有路径),但这不是你的文件结构。
另外,我回答这个从未使用过区域的问题,不确定这些是否会影响到等式中,但是快速阅读似乎表明他们更多的是锁定路径而不是找到它们。