尝试将FindView与路径一起使用

时间:2011-05-17 11:06:15

标签: asp.net-mvc viewengine

我正在尝试使用路径检查是否存在一些视图。但即使它们确实存在,也无法找到它们。

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"是相同的视图,但只能找到后者。

1 个答案:

答案 0 :(得分:7)

当您使用路径时,您还需要指定扩展名:

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

如果您没有指定路径,则不需要扩展名,因为在这种情况下,视图引擎会遵循标准惯例来发现视图。