1

下にレイアウトページがあります

~/エリア/管理者/共有/_Layout.cshtml

その中に、部分的なビューをレンダリングすることになっていたセクションがあります。だから私が内部_layout.cshtmlでしたことは提供することでした@Html.RenderAction("Sidebar")

コントローラーは実際には basecontroller であり、他のすべてのコントローラーに継承されます。なので

[OutputCache(Duration=60)]
public partial class BaseController : Controller
{       
    [ChildActionOnly]
    public virtual ActionResult Sidebar()
    {

        return View();
    }
}

現在、このコントローラーはすべての X、Y、Z コントローラーによってインターライトされることになっているため、すべてSidebarのコントローラー@Html.Renderaction("Sidebar")が子アクションを使用できるため、レンダリングする子アクションを見つけるのに問題はありません。

問題は、パーシャルビューのパスが下にあることです/Areas/Admin/Views/Shared/Partials/Sidebar/cshtml

また、その特定の下で検索するようにかみそりビュー エンジンを構成しました/Areas/Admin/Views/Shared/Partials/Sidebar.cshtml。そして、global.asax の下に登録しました。

しかし、部分的なビューを見つけることができず、次のようなエラーが発生します

~/Areas/Admin/Views/Admin/Sidebar.aspx
~/Areas/Admin/Views/Admin/Sidebar.ascx
~/Areas/Admin/Views/Shared/Sidebar.aspx
~/Areas/Admin/Views/Shared/Sidebar.ascx
~/Views/Admin/Sidebar.aspx
~/Views/Admin/Sidebar.ascx
~/Views/Shared/Sidebar.aspx
~/Views/Shared/Sidebar.ascx
~/Areas/Admin/Views/Admin/Sidebar.cshtml
~/Areas/Admin/Views/Admin/Sidebar.vbhtml
~/Areas/Admin/Views/Shared/Sidebar.cshtml
~/Areas/Admin/Views/Shared/Sidebar.vbhtml
~/Admin/Sidebar.cshtml
~/Views/Admin/Sidebar.vbhtml
~/Views/Shared/Sidebar.cshtml
~/Views/Shared/Sidebar.vbhtml

私のカスタムカミソリビューエンジンは

public class LocalizedViewEngine : RazorViewEngine
{
    ///{0} = View Name
    ///{1} = Controller Name

    private static readonly string[] NewPartialViewFormats = new[] {
        "~/Areas/Admin/Views/{1}/Partials/{0}.cshtml",
        "~/Areas/Admin/Views/Shared/Partials/{0}.cshtml",
        "~/Views/Shared/Partials/{0}.cshtml",
        "~/Views/{1}/Partials/{0}.cshtml"
    };
    private static readonly string[] NewViewLocationFormats = new[] { 
        "~/Areas/Admin/Views/{1}/{0}.cshtml" 
    };

    public LocalizedViewEngine()
    {
        base.ViewLocationFormats = 
base.ViewLocationFormats.Union(NewViewLocationFormats).ToArray<string>();
        base.PartialViewLocationFormats = 
base.PartialViewLocationFormats.Union(NewPartialViewFormats).ToArray<string>();
    }
}

そして私のglobal.asaxには

ViewEngines.Engines.Add(new LocalizedViewEngine());

しかし、 tha の下に部分ビューが見つかりません~/Areas/Admin/Views/Shared/Partials/Sidebar.cshtml。どこが間違っていますか?

4

0 に答える 0