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

siv*_*iva 42 asp.net-mvc razor asp.net-mvc-3

我有以下控制器代码:

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

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

我的索引视图具有以下代码:

@HTML.Action("MyPartialViewAction")
Run Code Online (Sandbox Code Playgroud)

当我运行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()但没有运气.

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

谢谢

Mae*_*ess 50

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

return PartialView("~/Views/Shared/MyCustomFolder/_MyPartialView.cshtml",PartialViewModel);
Run Code Online (Sandbox Code Playgroud)


San*_*lal 44

以防所选答案对您不起作用:

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

  • 当我复制并粘贴cshtml文件而不是添加新文件时,通常会发生这种情况. (13认同)
  • 同样的事情也发生在我身上 - 文件以某种方式设置为嵌入式资源。将其改回内容并且它当然有效。 (2认同)
  • 对于不立即知道如何更改构建动作的任何人:右键单击“文件”>“属性”>“构建动作”>“选择内容”。(确保您未在​​调试,因为下拉菜单将被禁用) (2认同)

luk*_*jkw 7

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

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


小智 5

还要仔细检查文件名后面、“.cshtml”之前的空格。我不小心在文件名后插入了一个空格,这扰乱了 PartialView() 的自动行为。