如何从类库项目加载视图?
我尝试创建VirtualPathProvider
并将视图设置为嵌入式资源。
class AssemblyResourceVirtualFile : VirtualFile { string path; public AssemblyResourceVirtualFile(string virtualPath) : base(virtualPath) { path = VirtualPathUtility.ToAppRelative(virtualPath); } public override System.IO.Stream Open() { string[] parts = path.Split('/'); string assemblyName = parts[2]; string resourceName = parts[3]; assemblyName = Path.Combine(HttpRuntime.BinDirectory, assemblyName); var assembly = Assembly.LoadFile(assemblyName); if (assembly != null) { return assembly.GetManifestResourceStream(resourceName); } return null; } }
和
public class AssemblyResourceProvider : System.Web.Hosting.VirtualPathProvider { public AssemblyResourceProvider() { } private bool IsAppResourcePath(string virtualPath) { String checkPath = VirtualPathUtility.ToAppRelative(virtualPath); return checkPath.StartsWith("~/App_Resource/", StringComparison.InvariantCultureIgnoreCase); } public override bool FileExists(string virtualPath) { return (IsAppResourcePath(virtualPath) || base.FileExists(virtualPath)); } public override VirtualFile GetFile(string virtualPath) { if (IsAppResourcePath(virtualPath)) return new AssemblyResourceVirtualFile(virtualPath); else return base.GetFile(virtualPath); } public override CacheDependency GetCacheDependency(string virtualPath, IEnumerable virtualPathDependencies, DateTime utcStart) { if (IsAppResourcePath(virtualPath)) return null; else return base.GetCacheDependency(virtualPath, virtualPathDependencies, utcStart); } }
我的控制器
return View("~/App_Resource/Blog.DLL/Blog.Views.Blog.Latest.cshtml");
它确实找到了视图,但我最终得到了这个错误:
… view.cshtml’必须从WebViewPage或WebViewPage 派生。
尝试使用以下内容显示部分视图时:
@{ Html.RenderAction("Latest", "Blog"); }
有办法解决吗?
或者是否有更简单的方法来存储DLL的视图?
发生这种情况的原因是因为您现在正在从未知位置提供剃刀视图,标准~/views/web.config
不再适用。 所以你可以在你的自定义视图中放入一个@inherits System.Web.Mvc.WebViewPage
但这可能会非常麻烦。
您可以查看以下文章 。
- 如何在ASP.NET MVC中使用多个表单元素
- 如何格式化MVC3中TextBoxFor()显示的DateTime?
- 无法使用spring.net在asp.net mvc3应用程序中打开数据库(sqlite)
- 如何在单个Razor View中编辑多个模型
- Linq查询使用包含而不包含
- 使用ASP.NET和MVC 3,如何创建隐藏字段,以便具有数组的List作为列表中每个项的值正确绑定?
- 如何创建像Html.BeginForm这样的Html Helper
- 如何使用动态模式创建regularExpressionAttribute来自model属性
- 在基于C#中的存储过程执行查询后,如何为CommandText重用SqlCommand对象?