ASP.NET MVC:如何获取所有可用视图?

时间:2010-02-03 20:20:41

标签: asp.net-mvc viewengine

我的网站上有一个处理未知操作的控制器,如果存在,则返回一个视图。这样可以将静态内容添加到站点的此特定区域,而无需修改控制器。我现在面临的问题是创建一个sitemap.xml文件,其中包含指向所有这些“未知”视图的链接。从我的生成站点地图的方法枚举这些静态内容视图的最佳方法是什么?

下面的代码显示了我为未知操作做的事情:

protected override void HandleUnknownAction(string actionName)
{
    GetUnknownActionResult(actionName).ExecuteResult(ControllerContext);
}

[NonAction] //public so it is testable
public ActionResult GetUnknownActionResult(string actionName)
{
    var result = View(actionName);

    if (result.ViewEngineCollection.Any(engine => engine.FindView(ControllerContext, result.ViewName, null, true).View != null))
    {
        return result;
    }

    return new HttpNotFoundResult();
}

1 个答案:

答案 0 :(得分:1)

如果您从“静态内容”目录提供静态内容,例如.htm文件和.pdf文件,我只需使用System.File.IO枚举这些文件,然后从中构建链接。