【问题标题】:Load view from bin folder?从 bin 文件夹加载视图?
【发布时间】:2009-04-27 14:55:50
【问题描述】:

为了让多个站点拥有一组中心视图,我创建了一个包含我的视图的外部库。它们被标记为内容并始终复制。
这个视图库在我的网站中被引用,因此通过编译在他们的 bin 文件夹中获得一个“视图”文件夹。
然后我制作了一个这样的快速自定义 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文件夹有view感觉有点奇怪,欢迎提出其他建议。

【问题讨论】:

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


    【解决方案1】:

    为什么不对项目使用构建后操作将 /bin/Views 中的文件移动到 /Views 中?这样你就不必在代码中做任何特别的事情了。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 安全确实是我所考虑的。但后来我会得到一个我猜的安全错误。 Htmlhelpers 不会让我摆脱这种情况,因为我一开始就没有视图......
      • Htmlhelpers 建议的意思是,根本不要将视图放在 bin 文件夹中,如果可能的话,让它们呈现并从外部库返回。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-17
      • 2011-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多