2009-04-27 71 views
0

为了让多个网站拥有一个中央视图集,我创建了一个包含我的视图的外部库。它们被标记为内容并始终复制。
这个视图库在我的网站被引用,因此编译得到他们的bin文件夹中的“Views”文件夹。
后来我做了一个快速自定义视图引擎是这样的:从bin文件夹加载视图?

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文件夹有意见,欢迎任何其他建议。

回答

0

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

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

+0

安全确实是我想到的。但后来我会得到一个安全性错误,我猜想。 Htmlhelpers不会让我摆脱这个,因为我没有第一个地方的视图... – 2009-04-27 15:22:02

1

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