在平等应用中夹杂使用ASP.NET窗体和ASP.NET MVC 转自:geez的个人空间

在同样应用中混合使用ASP.NET窗体和ASP.NET
MVC

不是怀有的ASP.NET
MVC Web应用程序都亟需发轫创制,可能你希望将长存的ASP.NET应用移植到ASP.NET
MVC。在同贰个选拔还要使用ASP.NE窗体和ASP.NET
MVC可能啊?答案是-完全能够。

在同二个利用还要使用ASP.NE窗体和ASP.NET
MVC不仅是实惠的,而且是一定简单的,因为ASP.NET
MVC是在ASP.NET基础上创设的框架。实际上它们仅有3个关键处不相同:ASP.NET是在System.Web名称空间下,而ASP.NET
MVC在System.WebSystem.Web.RoutingSystem.Web.Abstractions,
以及System.Web.Mvc多个称呼空间下,这意味,在存活ASP.NET应用程序中添加对那些库(assemblies)的引用,是整合使用那三种技术的开行。

ASP.NET
MVC在ASP.NET基础上塑造的此外贰个优点是:应用数据可见很简单地在两种技术间共享。例如,Session这些状态对象在三种技术下都得以采用,那样使得通过Session状态来十分的快地共享数据。

二个ASP.NET窗体应用程序能够通超过实际施以下步骤,成为四个ASP.NET
MVC应用程序。

1.   在存活的ASP.NET应用程序中,添加以下库的引用:System.Web.Routing.dllSystem.Web.Abstractions.dll,
andSystem.Web.Mvc.dll**;

2.   在存活ASP.NET应用程序中添加Controllers,Views,Views/Shared文件夹;

3.   修改web.config文件,如下(注意是修改ASP.NET应用程序现有的web.config,而不是覆盖掉):

<
?xml version=”1.0″?>
<configuration>
 <system.web>
   <compilation
debug=”false”>
     <assemblies>
       <add
assembly=”System.Core, Version=3.5.0.0, Culture=neutral,
                      PublicKeyToken=B77A5C561934E089″/>
       <add
assembly=”System.Web.Extensions,
                      Version=3.5.0.0,
Culture=neutral,
                      PublicKeyToken=31BF3856AD364E35″/>
       <add
assembly=”System.Web.Abstractions,
                      Version=3.5.0.0,
Culture=neutral,
                      PublicKeyToken=31BF3856AD364E35″/>
       <add
assembly=”System.Web.Routing,
                      Version=3.5.0.0,
Culture=neutral,
                      PublicKeyToken=31BF3856AD364E35″/>
     </assemblies>
   </compilation>
   <pages>
     <namespaces>
       <add
namespace=”System.Web.Mvc”/>
       <add
namespace=”System.Web.Mvc.Ajax”/>
       <add
namespace=”System.Web.Mvc.Html” />
       <add
namespace=”System.Web.Routing”/>
       <add
namespace=”System.Linq”/>
       <add
namespace=”System.Collections.Generic”/>
     </namespaces>
   </pages>
   <httpModules>
     <add
name=”UrlRoutingModule”
          type=”System.Web.Routing.UrlRoutingModule,
                System.Web.Routing,
Version=3.5.0.0,
                Culture=neutral,
PublicKeyToken=31BF3856AD364E35″ />
   </httpModules>
 </system.web>
</configuration>

4.   配置路由。往Global.asax中插手暗中同意的ASP.NET
MVC全局应用程序类(Global
Application Class)。

using
System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;

namespace MixingBothWorldsExample
{
   public
class Global : System.Web.HttpApplication
   {
       public
static void RegisterRoutes(RouteCollection routes)
       {
           routes.IgnoreRoute(“{resource}.axd/{*pathInfo}”);
           routes.IgnoreRoute(“{resource}.aspx/{*pathInfo}”);
           routes.MapRoute(
              “Default”,
// Route name
              “{controller}/{action}/{id}”,
// URL with parameters
              new
{ controller = “Home”, action = “Index”, id = “” }
// Parameter defaults
               );
       }
       protected
void Application_Start()
       {
           RegisterRoutes(RouteTable.Routes);
       }
   }
}

请留意以下一行代码,它制止ASP.NET窗体的伏乞被路由到ASP.NET
MVC中:

routes.IgnoreRoute(“{resource}.aspx/{*pathInfo}”);

如上两个步骤完结后,大家便足以初阶添加ASP.NET
MVC控制器和视图了,例如:

using
System.Web.Mvc;
namespace MixingBothWorldsExample.Controllers
{
   public
class HomeController : Controller
   {
       public
ActionResult Index()
       {
           ViewData[“Message”]
= “This is ASP.NET MVC!”;
           return
View();
       }
   }
}

 

<%@
Page Language=”C#”
   AutoEventWireup=”true”
   CodeBehind=”Index.aspx.cs”
   Inherits=”MixingBothWorldsExample.Views.Home.Index”
%>

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN”
 “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
<html xmlns=”http://www.w3.org/1999/xhtml” >
<head id=”Head1″ runat=”server“>
   <title></title>
</head>
<body>
   <div>
       <h1><%=Html.Encode(ViewData[“Message”])
%></h1>
   </div>
</body>
</html>

相关文章