1

我的情况是,我是 MVC 的新手,而我团队中的其他程序员不是,所以有时我的学习曲线会稍微减慢可交付成果,所以我试图弄清楚我在 MVC 中混合的选择是什么使用 WebForms 的视图(或部分视图)作为短期解决方案,使功能在 beta 版本中可用,并让我有机会在 MVC 中重新编写以进行生产。

我阅读了这篇文章,它解释了如何引用这两个框架的程序集,但似乎没有解释如何将它们混合在一个页面中。

例如,我可以获取一个用户控件 (.ascx) 和一个视图 (.cshtml) 并将它们轻松地呈现到母版页 (.master.aspx) 中吗?

就好像我想要一个在服务器端执行视图并将内容写入响应流的服务器控件。我想另一种选择是将 javascript ajax 视图放入 asp.net 页面,但我想知道是否可以避免这种情况。

4

1 回答 1

2

是和不是。

您可以混合使用 ASP.NET MVC 和 WebForms,但不建议这样做,而且对混合的内容也有限制。在我的整个帖子中,我指的是 ASPX 视图,而不是 Razor / CSHTML 视图。使用带有 WebForms 的替代 ViewEngines 几乎是不可能的。

WebForms 可以单独使用 MVC 视图(ASPX,而不是 CSHTML),前提是您正确初始化它并在需要时提供模型对象(视图就像常规 aspx 页面一样,除了没有 CodeBehind 类)。

您还可以System.Web.UI.Control通过一些小技巧将 ASCX 控件和子类加载到 ASP.NET MVC 视图中(这并不完美 - 例如,不会触发控件生命周期事件,但更多的是让它们呈现到您的视图中)。

您还可以在与 MVC Web 应用程序相同的环境中拥有 ASPX 页面(只要您让路由工作)。CodeBehind 风格的 ASPX 可以将用户重定向到 MVC 控制器操作,反之亦然。

但是,如果没有大量艰苦的工作,您就无法从 WebForms 页面 CodeBehind 中调用 MVC 控制器操作,但我真的看不出您想要这样做的任何理由。

我认为你应该改写你原来的问题,想想你最终想要完成什么。就个人而言,如果这是一项维护任务,我会坚持使用纯 WebForms,并且只将 MVC 用于新项目。WebForms 并没有死,只要问问 ScottGu。

于 2012-08-30T22:53:27.490 回答