未找到局部视图或视图引擎不支持搜索的位置

时间:2014-02-26 21:57:41

标签: asp.net-mvc asp.net-mvc-3 razor

我有以下控制器代码:

public MyController:Controller
{
    public ActionResult Index()
    {
        return View();
    }

    [ChildActionOnly]
    public ActionResult MyPartialViewAction()
    {
        return PartialView("~/Views/Shared/MyCustomFolder/_MyPartialView",PartialViewModel);
    }
}

我的索引视图包含以下代码:

@HTML.Action("MyPartialViewAction")

当我运行Web应用程序时,我得到了InnerExceptionMessage的HttpException:

  

InnerException {“找不到局部视图'〜/ Views / Shared / MyCustomFolder / _MyPartialView',或者没有视图引擎支持搜索到的位置。搜索了以下位置:\ r \ n ~~ / Views / Shared / MyCustomFolder / _MyPartialView“} System.Exception {System.InvalidOperationException}

到目前为止我一直在尝试:

  • 尝试将_MyPartialView~/Views/Shared/MyCustomFolder移至~/Views/Shared/~/Views/MyControllerFolder,但仍然存在错误

  • 尝试将我的索引视图代码更改为@HTML.RenderAction(),但没有运气。

关于我出错的地方的任何输入?

由于

6 个答案:

答案 0 :(得分:47)

您需要将.cshtml扩展名添加到视图名称:

return PartialView("~/Views/Shared/MyCustomFolder/_MyPartialView.cshtml",PartialViewModel);

答案 1 :(得分:39)

以防所选答案不适合您:

我将cshtml文件的构建操作更改为Content并修复了它。

答案 2 :(得分:7)

如果答案仍然不适合您并且您已将部分放在部分内部的嵌套文件夹中,请确保提供带扩展名的部分的完整路径。

@Html.Partial("~/Views/Partials/Components/_AdvancedComponentRenderer.cshtml", Model.Content);

答案 3 :(得分:3)

还要在“.cshtml”之前仔细检查文件名后面的空格。我在文件名后意外插入了一个空格,这对我来说打乱了PartialView()的自动行为。

答案 4 :(得分:1)

希望,此代码对您有帮助(在“。cshtml” 文件中)

@using Microsoft.AspNetCore.Mvc.ViewEngines
@inject ICompositeViewEngine Engine

....
string path = "../Themes/User/_head";

@if (Engine.FindView(ViewContext, path, isMainPage: false).Success)
{
    <partial name="@path" for="@Model" />
}
else
{
    <partial name="../Themes/Admin/_head" />
}

谢谢

答案 5 :(得分:0)

我收到此错误消息是因为部分视图已添加到项目文件(.csproj),但实际上并不存在于磁盘上。