Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 未找到局部视图,或者没有视图引擎支持搜索的位置_Asp.net Mvc_Asp.net Mvc 3_Razor - Fatal编程技术网

Asp.net mvc 未找到局部视图,或者没有视图引擎支持搜索的位置

Asp.net mvc 未找到局部视图,或者没有视图引擎支持搜索的位置,asp.net-mvc,asp.net-mvc-3,razor,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/_MyPar

我有以下控制器代码:

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

    [ChildActionOnly]
    public ActionResult MyPartialViewAction()
    {
        return PartialView("~/Views/Shared/MyCustomFolder/_MyPartialView",PartialViewModel);
    }
}
“我的索引”视图具有以下代码:

@HTML.Action("MyPartialViewAction")
当我运行Web应用程序时,我得到HttpException和InnerExceptionMessage,如下所示:

InnerException{“未找到部分视图'~/Views/Shared/MyCustomFolder/\u MyPartialView',或者没有视图引擎支持搜索的位置。搜索了以下位置:\r\n~~/Views/Shared/MyCustomFolder/\u MyPartialView}系统。异常{System.invalidoctionException}

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

  • 尝试将
    \u MyPartialView
    ~/Views/Shared/MyCustomFolder
    移动到
    ~/Views/Shared/
    ~/Views/MyControllerFolder
    ,但仍然存在错误

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

有关于我哪里出错的信息吗


谢谢

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

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

以防所选答案对您无效:


我将cshtml文件的生成操作更改为Content,并将其修复。

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


@Html.Partial(“~/Views/Partials/Components/\u AdvancedComponentRenderer.cshtml”,Model.Content)

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

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

希望,此代码可以帮助您(在.cshtml“文件中)

@使用Microsoft.AspNetCore.Mvc.ViewEngines
@注入ICompositeViewEngine引擎
....
字符串路径=“../Themes/User/_head”;
@if(Engine.FindView(ViewContext,path,isMainPage:false).Success)
{
}
其他的
{
}

谢谢

是的,我想Razor会自动处理文件扩展名。谢谢@MaessI也有同样的问题。我想可能是因为我们使用了“~/Views”而不是默认路径,然后我们必须写出整个文件路径(包括扩展名),因为我们现在已经显式地使用了视图的名称。感谢Sanvir,知道为什么在创建cshtml文件时,我的构建操作设置为“None”吗。对我来说,这似乎有点奇怪的功能?这通常发生在我复制和粘贴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" />
}