从bin文件夹加载视图?

时间:2009-04-27 14:55:50

标签: c# .net asp.net-mvc

为了让几个站点具有一组中心视图,我创建了一个带有我的视图的外部库。它们始终标记为内容和副本 此视图库在我的网站中引用,因此编译时会在其bin文件夹中获取“Views”文件夹 然后我做了一个快速定制的ViewEngine:

public class CommonViewLocator: WebFormViewEngine
{
    public CommonViewLocator()
    {
        MasterLocationFormats = new[] {  
            "~/bin/Views/{1}/{0}.master",  
            "~/bin/Views/Shared/{0}.master"  
        };
        ViewLocationFormats = new[] {  
            "~/bin/Views/{1}/{0}.aspx",  
            "~/bin/Views/{1}/{0}.ascx",  
            "~/bin/Views/Shared/{0}.aspx",  
            "~/bin/Views/Shared/{0}.ascx"  
        };
        PartialViewLocationFormats = ViewLocationFormats;  
    }
}

跑完后我得到这个屏幕:

The view 'Index' or its master could not be found. The following locations were searched:
~/Views/Home/Index.aspx
~/Views/Home/Index.ascx
~/Views/Shared/Index.aspx
~/Views/Shared/Index.ascx
~/bin/Views/Home/Index.aspx
~/bin/Views/Home/Index.ascx
~/bin/Views/Shared/Index.aspx
~/bin/Views/Shared/Index.ascx

出了什么问题?
此外,bin文件夹有视图感觉有点奇怪,欢迎任何其他建议。

2 个答案:

答案 0 :(得分:1)

为什么不在项目上使用post-build操作将/ bin / Views中的文件移动到/ Views?那么你就不必在代码中做任何特别的事了。

答案 1 :(得分:0)

如果您完全确定内容位于正确的文件夹中,则可能是服务器不允许从bin目录提供任何内容,出于明显的安全原因。

如果是这种情况,我建议您将视图保留在外部项目中,然后创建呈现这些视图的HTML扩展方法。