【问题标题】:Load partial from class library从类库加载部分
【发布时间】:2009-04-15 10:09:56
【问题描述】:

有没有办法从类库中加载部分视图?
我想从几个网站中提取通用部分,以使其更易于维护。

目前我用(例如)渲染我的部分

<%Html.RenderPartial("~/Views/Search/_searchBlock.ascx", ViewData);%>

这是基于文件的,但是在创建类库时,会编译视图。 有没有办法加载在这个库中编译的库?

【问题讨论】:

  • 这似乎是一件非常有用的事情,尤其是在将应用程序从 WebForms 迁移到 MVC 时。是否可以在最新版本的 asp.net mvc 或 mvc 2 中使用?
  • @Ashley。不久前我在教程中看到过它。但由于我不再从事那个项目,所以我没有在实践中使用它。如果我能再次找到它,我会稍后发布一个链接

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


【解决方案1】:

我能想到的唯一方法是使用embedded resources 和自定义视图引擎。 System.Web.Mvc.Html.RenderPartialExtensions 处的点反射器(或下载 MVC 资源)

【讨论】:

  • 嗯,有没有更直接的方法可以让控件在多个站点中可用?
  • 我不确定,如果有的话我会很感兴趣。以我的方式做这件事有点麻烦,您需要用从程序集资源中为您读取文件的文本流的东西替换对 BuildManager.CreateInstanceFromVirtualPath 的调用,将其编译为 ViewUserControl。基本上努力
  • 也许 svn:externals 可以帮助你?
  • bitworking.org/news/Sourceforge__Subversion_and_svn_externals 您可以将共享的 .ascxs 放在他们自己的仓库中,然后使用 svn:externals 从每个项目中引用它们
  • 我担心这在我目前公司的设置中是不可能的(不要问 :S ),但它对我来说似乎是一个解决方案。谢谢
【解决方案2】:

请参阅 Phil Haacks new post 了解替代想法

【讨论】:

  • 他,你回答的时候我正在看它。感谢你转身这件事。虽然它看起来确实很邪恶,但我看不出这在我的场景中会有多大用处。我想我将尝试创建自己的定位视图的方法。这样,我可以添加一个 appKey,说明它们所在的位置,所有网站都会从那里获取它,而不是在它自己的文件夹中搜索。
  • 它的 virtualpathprovider 业务,这就是你需要重写/实现做你想做的事
  • 嗯,看起来渲染是基于文件的,直到引擎深处:S 这很糟糕。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-06
相关资源
最近更新 更多