【问题标题】:The view 'name' or its master was not found or no view engine supports the searched locations未找到视图“名称”或其主视图,或者没有视图引擎支持搜索到的位置
【发布时间】:2015-07-09 02:08:50
【问题描述】:

我收到此错误消息,我看到的任何建议似乎都不适用;即所有视图、控制器和模型都在正确的文件夹中。

更多细节: 我有一个主视图,它显示了一个类似于流程图的图形界面,用于与应用程序交互。用户选择“打开研究”符号,然后我重定向到另一个视图,该视图允许用户选择要使用的研究。

OpenStudyController 代码检索选定的研究,然后重定向回主视图:

public ActionResult SelectStudy( Guid? id )
{
    // code elided for clarity

    return RedirectToAction( "ActivateStudy", "Home" );
}

HomeController 有一个名为 ActivateStudy(...) 的方法,它会在适当的环境中调用:

public ActionResult ActivateStudy()
{
    // code elided for clarity

    return View();
}

正如我所说,所有视图、控制器和模型都在正确的文件夹中。

执行ActivateStudy()中的“return View()”代码时,出现错误信息:

“/”应用程序中的服务器错误。

未找到视图“ActivateStudy”或其主视图,或者没有视图引擎支持搜索的位置。搜索了以下位置: ~/Views/Home/ActivateStudy.aspx ~/Views/Home/ActivateStudy.ascx ~/Views/Shared/ActivateStudy.aspx ~/Views/Shared/ActivateStudy.ascx ~/Views/Home/ActivateStudy.cshtml ~/Views/Home/ActivateStudy.vbhtml ~/Views/Shared/ActivateStudy.cshtml ~/Views/Shared/ActivateStudy.vbhtml

我错过了什么? RedirectToAction(...) 中的一些附加参数? RouteConfig 中的一些新条目?

【问题讨论】:

  • 您是在应用程序中使用区域,还是所有控制器和视图都在顶级 Controllers & Views 文件夹中?通常,出现该错误时,您会获得它寻找视图的所有位置的列表。您能否用该列表更新您的问题,因为有时这会提供线索?
  • 按要求添加了搜索位置。对不起,笨拙的格式。我对 ASP.NET MVC 比较陌生,所以我不确定这些领域。有问题的控制器都在项目的 Controllers 文件夹下(模型也是如此)。每个视图都有其单独的文件夹,位于项目视图文件夹下。如果我能知道在哪里寻找或尝试什么......
  • 查看您的 ActivateStudy 视图,看看是否有以Layout = 开头的行。如果是这样,分配给Layout 的值是多少?如果该行不存在,请检查您的 _ViewStart.cshtml 是否有同一行。
  • Layout = "~Views/Shared/_Layout.cshtml";它在 _ViewStart.cshtml

标签: asp.net-mvc-5


【解决方案1】:

如果您有 _ViewStart.cshtml 并且它包含类似以下内容,则无需在每个视图中指定相同的布局。

@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}

我相信您的问题可能与缺少斜线有关。在您的评论中,您说您的观点包含以下行:

Layout = "~Views/Shared/_Layout.cshtml"

我认为在波浪号之后需要有一个斜线。

Layout = "~/Views/Shared/_Layout.cshtml"

但是,正如我所说,您应该能够完全删除该行。

【讨论】:

  • 我的错,“~”后面有一个“/”。我试着去掉这条线,没有区别。也许我应该问一个稍微不同的问题:我如何从一页回到主页?是通过 RedirectToAction(...) 还是有其他机制?
【解决方案2】:

好吧,我不知道这是否是“正确”的做法,但是,在我的 HomeController.ActivateStudy() 方法中,我返回 Home“索引”视图:

public ActionResult ActivateStudy()
{
    // code elided for clarity

    return View( "Index" );
}

这行得通。

有时你会意识到你真的不太了解。回到书籍和代码编辑器。边做边学。

【讨论】:

    猜你喜欢
    • 2013-08-18
    • 2013-06-23
    • 2017-03-09
    • 1970-01-01
    • 1970-01-01
    • 2012-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多