0

Razor には、"~/areas/shared/views/shared/_partialName.cshtml". 私が単に@{ Html.RenderPartial("_partialName", myModel"); }私の見解で行うと、それを見つけることができません。代わりに、そのパーシャルへのパスを完全に修飾する必要があります。

"~/areas/shared/views/shared/"パーシャルを見つけようとするときに、プロジェクトがクロールするフォルダーのリストにそのフォルダーを含めるようにプロジェクトに指示できますか? このようにして、コードのスニペットをビューに保持して、その部分を適切に短くレンダリングできます。ありがとう!

4

1 に答える 1

0

RazorViewEngine クラスには、さまざまなビュー ファイル (領域、パーシャルなど) を探す場所のパターンを持つプロパティが含まれています。これを非常に簡単にオーバーライドして、代わりに独自の実装を使用するように Globals.asax でアプリケーションに指示できます。

public class MyViewEngine : RazorViewEngine
{
    public MyViewEngine()
    {
        // Use the standard partials location in addition to this location
        // {0} is the partial view name, {1} is the controller name
        String[] morePartialLocations = new String[] {
            "~/areas/shared/views/shared/{0}.cshtml"
        };
        PartialViewLocationFormats =
            PartialViewLocationFormats.Concat(morePartialLocations).ToArray();
    }
}

// in Globals.asax

protected void Application_Start()
{
    ...
    ViewEngines.Engines.Clear();
    ViewEngines.Engines.Add(new MyViewEngine());
    ...
}

エリアで作業しているように聞こえるのでAreaViewLocationFormats、同じ方法で更新し、エリアの名前として「{2}」を挿入できる、オーバーライドできる別のプロパティが呼び出されることに注意してください。

于 2012-04-30T15:25:57.623 に答える