2

パスを使用して、いくつかのビューが存在するかどうかを確認しようとしています。ただし、ビューが存在していても見つかりません。

private string SelectFirstView(ControllerContext ctx, params string[] viewNames)
{
    return viewNames.First(view => ViewExists(ctx, view));
}

private bool ViewExists(ControllerContext ctx, string name)
{
    var result = ViewEngines.Engines.FindView(ctx, name, null);
    return result.View != null;
}

そして、私がどのようにビューを見つけようとするか:

var viewName = SelectFirstView(ctx, statusCodeName,
                               "~/Error/" + statusCodeName,
                               "~/Error/General",
                               "~/Shared/Error",
                               "Error");

"~/Shared/Error""Error"は同じビューですが、後者のみが検出されることに注意してください。

4

1 に答える 1

7

パスを使用する場合は、拡張子も指定する必要があります。

~/Error/General.cshtml
~/Shared/Error.cshtml
...

When you don't specify a path you don't need the extension as in this case the view engine follows standard conventions to discover the views.

于 2011-05-17T11:14:15.047 に答える