我一直在寻找一段时间,我希望我只是错过了一些小而明显的东西。对于未检测到此文件,是否还有其他我可能遗漏的原因?大多数针对此错误的建议表明该文件未正确命名、未正确注册其路径或所述文件的位置不正确。
我不认为它的名称、路径或注册表。当我运行它时,我实际上可以在返回视图之前调试并在我的主控制器中命中一个断点。
下面是我得到的错误。我已将文件实际存在的路径加粗。
未找到视图“索引”或其主视图,或者没有视图引擎支持搜索的位置。搜索了以下位置:
~/Views/Home/Index.cshtml
~/Home/Index.vbhtml
~/Views/Shared/Index.cshtml
~/Views/Shared/Index.vbhtml下面是我得到的堆栈跟踪
在 System.Web.Mvc.ViewResult.FindView(System.Web.Mvc.ControllerContext 上下文)[0x00000] 中:0 在 System.Web.Mvc.ViewResultBase.ExecuteResult(System.Web.Mvc.ControllerContext 上下文)[0x00000] 中:0 在 System.Web.Mvc.ControllerActionInvoker.InvokeActionResult (System.Web.Mvc.ControllerContext controllerContext, System.Web.Mvc.ActionResult actionResult) [0x00000] 在 :0 在 System.Web.Mvc.ControllerActionInvoker+<>c__DisplayClass1a.b__17 () [0x00000] in :0 at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter (IResultFilter filter, System.Web.Mvc.ResultExecutingContext preContext, System.Func`1 continuation) [0x00000] in :0 这就是我想要的设置。
razorpage/Global.asax.cs
routes.IgnoreRoute ("{resource}.axd/{*pathInfo}");
routes.MapRoute (
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
razorpage/控制器/HomeController.cs
public class HomeController : Controller
{
public ActionResult Index ()
{
return View ();
}
}
razorpage/Views/Home/Index.cshtml
@model homepagerazor.Controllers.HomeController
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
这是我的文件夹结构的小快照
更新
在单声道中,似乎没有像在 Visual Studio 中那样更改起始页面的特定选项。如果我打开 web.config 限制,我可以导航到视图目录中的常规 html 页面,这样我就知道虚拟路径在那里并且正确。
这让我怀疑是否正在加载正确的视图引擎,因此我闯入应用程序的开头并检查以确保加载了 RazorViewEngine。这让我回到了我开始不知道如何在返回主页视图时找到我的问题的地方。