ASP.NET MVC视图可以在ASP.NET WebForms中呈现吗?

ASP.NET MVC视图可以在ASP.NET WebForms中呈现吗?

问题描述:

我处于一种我刚刚接触MVC的情况,而我的团队中的另一位程序员并非如此,有时候我的学习曲线正在减慢交付成果,因此我试图弄清楚我的选择是用于混合在MVC视图(或部分视图)中使用WebForms作为短期解决方案,使测试版中的功能可用,并使我有机会在MVC中重写用于生产。ASP.NET MVC视图可以在ASP.NET WebForms中呈现吗?

我读this article,它解释了如何引用这两个框架的程序集,但它似乎没有解释如何将它们混合在一个页面中。例如,我可以使用用户控件(.ascx)和视图(.cshtml),并轻松地将它们渲染到母版页(.master.aspx)中吗?

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

+1

我没有给你明确的答案,就像我正在研究的项目一样,我们遇到了混合WebForms和MVC(主要是视图状态存在严重问题)的一些严重限制。你可能有运气通过[渲染视图作为字符串](http://stackoverflow.com/questions/483091/render-a-view-as-a-string)。 –

+0

嘿,那还不错......谢谢 –

+0

你可能会喜欢查看由两个ASP.Net MVP开发的[MVP Web Forms](http://webformsmvp.com/)。 –

是的,没有。

您可以混合使用ASP.NET MVC和WebForms,但不推荐使用它,并且对可混用的内容也有限制。在我的文章中,我指的是ASPX视图,而不是Razor/CSHTML视图。使用WebForms替代ViewEngines几乎是不可能的。

的MVC视图(ASPX,不CSHTML)本身可提供的WebForms您正确初始化它,如果需要提供一个模型对象使用(视图然后就像一个普通的aspx页面,只是没有代码隐藏类) 。

您也可以加载ASCX控制和System.Web.UI.Control子与一些小窍门的ASP.NET MVC视图(它不是完美的 - 控制寿命的事件不会被解雇,例如,但它更多的是让他们呈现到您的视图中)。

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

但是,您无法从WebForms页面CodeBehind内部调用MVC Controller操作,而没有进行很多艰难的工作,但我无法真正看到您想要的任何原因。

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

+0

谢谢你的建议 - 你回答我的问题我相信足够,虽然我不完全确定如何改变措辞 - 随时编辑它,如果你愿意 –