2011-05-17 25 views
1

パスを使用していくつかのビューが存在するかどうかを確認しようとしています。しかし、たとえ存在していても、その見解を見つけることはできません。FindViewをパスで使用しようとしています

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"は同じ図であるが、後者のみが発見されていること。

答えて

6

あなたはあなたが同様に拡張子を指定する必要がありますパスで作業している:

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

あなたは、この場合にビューエンジンは、標準を次のように拡張機能を必要としないパスを指定しなかった場合見解を発見するための慣習。

関連する問題