2009-12-02 24 views
1

我与前端分隔成一个项目文件的应用程序,并分成完全不同的类库代码隐藏/班。我需要的是从UserControl Type获得VirtualPath的方法。动态检索用户控件的虚拟路径

通常情况下,我们有这样的代码

Board uc = (Board)Page.LoadControl(@"~\Board.ascx"); 

但我想是这样的

Board uc = (Board)Page.LoadControl(Board.VirtualPath); 

OR

Board uc = Page.LoadControl(Board); 

任何人都有一个想法,我怎么能做到这一点?

在此先感谢:)

回答

1

很确定您的MVC框架内控件的实现是不正确的。

我想你正试图加载控件,而你可能会想到PartialViews。

通常情况下,在这里MVC土地,你这样做<% Html.PartialView("PartialViewName", Model); %>

您可以使用WebFormViewEngine AMD PartialViewLocationFormats指定的局部视图等共享位置

您也可以从您的视图这样说<% Html.PartialView("~/views/myController/PartialViewName", Model); %>

我还没有看到或听说过任何人使用MVC应用程序中的LoadControl。

您也可以创建自己的HTML助手以及Web控件,但它们都不使用LoadControl。

听起来就像您试图重新使用您的WebForms控件。我可能会将您的Web控件转换为HTML助手或WebControls。研究MVC Web控件。

Check out this link

Also this one gives more info

+0

这不一定使用MVC框架,而是类似于web项目的MVC模式。就像我说的,页面文件存在于一个项目中,而代码隐藏文件和类文件存在于另一个项目中,该项目本身位于另一个目录中。这就是为什么我把它标记为MVC,但不一定在这里使用MVC框架。 本质上,我需要能够以某种方式引用Usercontrol的VirtualPath,因此我可以动态地将它加载到我的页面上。任何想法我怎么能做到这一点? – Kobojunkie 2009-12-02 05:09:28