ASP.NET MVC 与 ASP.NET Web Form其实是共用同一套ASP.NET框架,底层是一样的,两者之间有个很大的共同特性,那就是这两个技术都是实作IHttpHandler来处理网页,因此若要在两个网页支架传递数据,不外乎有以下几种方法。
1.HTTP GET(QueryString)或HTTP POST
在ASP.NET MVC 或 ASP.NET Web Form中都可以设计表单,要将表单数据从ASP.NET MVC 输出到ASP.BET Web Form 页面就和ASP.NET Web Form 输出表单数据到ASP.NET Web Form一样,只 差在ASP.NET MVC 没有ViewState 可以传给ASP.NET Web Form。
反过来说,即便ASP.NET Web Form 会多出一些_VIEWSTATE、_EVENTVALI-DATION 等隐藏栏位,不过,对ASP.NET MVC 来说也只是一般的表单栏位而已,所以不会影响彼此之间的数据传递。
在ASP.NET Web Form 中有Cross-Page Postring机制,事实上,也可以利用这个机制动态地让ASP.NET Web Form 网页将表单数据输出到ASP.NET MVC 的页面。
2.Session
如果ASP.NET MVC 或 ASP.NET Web Form 在同一个应用程序之下共用Session是完全没问题的,两者之间由于共用一个ASP.NET框架,所以,通过Session来传递数据其实非常方便。
如果ASP.NET MVC 或 ASP.NET Web Form不在同一个应用程序之下(不同站点或不同虚拟目录),那就无法彼此互通Session,详细的分析建议参考笔者的部落文章”如何让IIS6/IIS7中同站台不同应用程序间共用Session资料“(http://blog.miniasp.com/post/2010/01/24/How-to-Share-Session-Across-Applications-in-a-Site.aspx)。
3.Cookie