Asp.net mvc 2 混合WebForms和MVC:我应该如何处理母版页?

Asp.net mvc 2 混合WebForms和MVC:我应该如何处理母版页?,asp.net-mvc-2,webforms,mixed-mode,Asp.net Mvc 2,Webforms,Mixed Mode,我想开始将WebForms应用程序迁移到MVC。这一过程将是渐进的,因此这两个系统必须共存 问题是:我应该有两个母版页,一个用于WebForms页面,另一个用于MVC视图吗?有没有办法只有一个?在ASP.NET MVC中,母版页应该从中派生,而在经典Web表单中,母版页应该从中派生。如果在MVC中使用后者,您将无法访问任何帮助程序。尽管您可以在经典web表单中使用查看母版页,因为它源自母版页(您同样无法访问web表单应用程序中的帮助程序,但谁在乎呢) 所以要回答您的问题,是的,您可以有一个公共母

我想开始将WebForms应用程序迁移到MVC。这一过程将是渐进的,因此这两个系统必须共存


问题是:我应该有两个母版页,一个用于WebForms页面,另一个用于MVC视图吗?有没有办法只有一个?

在ASP.NET MVC中,母版页应该从中派生,而在经典Web表单中,母版页应该从中派生。如果在MVC中使用后者,您将无法访问任何帮助程序。尽管您可以在经典web表单中使用
查看母版页
,因为它源自
母版页
(您同样无法访问web表单应用程序中的帮助程序,但谁在乎呢)

所以要回答您的问题,是的,您可以有一个公共母版页,假设它来自
ViewMasterPage


尽管如此,您可能无法实现这一点,因为在MVC母版页中,您将使用HTML帮助程序来呈现部分视图,如
HTML.RenderPartial
,这在经典WebForms应用程序中没有多大意义,反之亦然,在经典WebForms应用程序中,您可能会使用一些服务器端控件,如
或有一个被ViewState污染的
表单
标签(同样带有
runat=“server”
),等等。。。这在MVC中几乎没有任何意义。所以我的建议是不要这样做。

那么,你的建议是要有两个母版页?(这没什么大不了的,因为它不会经常改变)是的,这是我的建议。在有些情况下,复制比尝试大量重复使用更好,最终得到克隆(大自然创造了不同的物种,试图将它们混合在一起可能会导致意想不到的结果:-))。