2011-12-19 121 views
9

我们有一个正在运行的解决方案包含许多web forms应用程序与相同的母版页,我们为母版页及其控件创建了一个类库项目并将其作为参考dll内部每个网页表单应用程序和编程分配母版页使用web窗体母版页作为母版页ASP.Net MVC视图编程式

现在我们将添加两个新的应用程序到我们的解决方案,但我们决定使用ASP.Net MVC 3建设这些新的应用程序。

问题是,我们必须为新的应用程序使用相同的母版页,那么我们如何使用代码为我们的视图设置母版页?

小心记住我们的母版页是一个类库项目。

回答

3

看这个文章,得到一个概述有关使用MVC混合Web表单:

另一个有趣的项目是Zeus当涉及到混合Web表单/ MVC解决方案。 它包含助手在Webform页面上使用HtmlHelper和UrlHelper。

+0

感谢伟大的职位,但它谈论的Web站点内的母版页不是类库项目(DLL)。 – 2011-12-28 15:43:31

+0

这篇文章讲述了如何在ASPX引擎和Razor引擎之间共享母版页。这是否与ASP.Net MVC 3.0 Razor Engine项目共享常规ASP.Net Mater页面的方法相同? – HaBo 2011-12-30 15:08:25

+0

@HaBo:我完全不明白你的问题。这篇文章讨论了如何在ASP.NET MVC Razor Views中使用Webforms Masterpage。 – Jan 2011-12-31 14:22:32

1

如果你真的想走向前进的MVC路线,那么你应该投入一些时间来将你的主页面转换为布局。其他一切都是黑客/解决方法。

1

埃米尔,我上传了一个工作样本here。步骤

1)从here下载并转换示例应用程序。

2)在此解决方案中添加MVC 3应用程序,并添加引用上述解决方案的类库。

3)在MVC视图中指定MasterPage(在视图中,MasterPageFile="~/MasterPageDir/MasterPage.master"或在控制器中返回View("Index",masterName: MasterPageVirtualPathProvider.MasterPageFileLocation);)。

4)将这些行放在global.asax中。

MasterPageVirtualPathProvider vpp = new MasterPageVirtualPathProvider(); 
HostingEnvironment.RegisterVirtualPathProvider(vpp); 
+0

+1,但它取决于'VirtualPathProvider'。不幸的是我们的旧项目不使用它:(看来我必须将母版页Html复制到我的'_layout'视图中,并使样式和图像指向生产版本(在线)。 – 2012-01-02 14:05:45