在web form項目中,混入mvc4和web api


如果大家和我一樣,需要在asp.net web form系統中,增加mvc4和web api相關的特性,又無從下手,那么希望這篇博文能給與你更好的指導,寫本博文更重要的一個目的,就是對我在做該任務過程中的一些總結。當然網上也已經有了很多相關的資料,本博文也做了些參考,特在此聲明。言歸正傳,就直接切入正題吧。

添加必要的dll引用

添加這些dll的引用,可以到網上下載,然后添加在web form項目中去,添加引用即可。另一個方法,就是用NuGet,下載安裝,在項目中就使用的這個方法。

1、安裝Microsoft ASP.NET MVC4,這個安裝包,依賴於Microsoft ASP.NET Razor和Microsoft ASP.NET Web Pages,所以這兩個也會自動安裝

2、安裝Microsoft ASP.NET Web API,這安裝包依賴於如下包,它們也會自動安裝:

1)Microsoft ASP.NET Web API Web Host

2) Microsoft ASP.NET Web API Core Libraries

3)Microsoft ASP.NET Web API Client Libraries

4)Microsoft Web Infrastructure

5)Microsoft .NET Framework4 Http client Libraries

3、安裝Microsoft ASP.NET Web Optimization Framework

4、添加引用Microsoft.CSharp

修改web.config

1、在<appSettings></appSettings>節點中,添加如下子節點:

<add key="webpages:Version" value="2.0.0.0" />
<add key="webpages:Enabled" value="false" />
<add key="PreserveLoginUrl" value="true" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />

2、在<pages></pages>節點(該節點為system.web的子節點)中,添加如下子節點:

<namespaces>
  <add namespace="System.Web.Helpers" />
  <add namespace="System.Web.Mvc" />
  <add namespace="System.Web.Mvc.Ajax" />
  <add namespace="System.Web.Mvc.Html" />
  <add namespace="System.Web.Optimization" />
  <add namespace="System.Web.Routing" />
  <add namespace="System.Web.WebPages" />
</namespaces>

3、在<configuration></configuration>節點中,添加如下子節點:

<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
      <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
      <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
    </dependentAssembly>
    <dependentAssembly>
      <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
      <bindingRedirect oldVersion="1.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
    </dependentAssembly>
    <dependentAssembly>
      <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
      <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
    </dependentAssembly>      
  </assemblyBinding>
</runtime>

4、如果在system.webServer節點中,沒有以下子節點,則增加。

<modules runAllManagedModulesForAllRequests="true" />
<validation validateIntegratedModeConfiguration="false" /> 

修改Application_Start方法

修改Global.asax的code behind類中的Application_Start函數,在其中增加如下代碼:

AreaRegistration.RegisterAllAreas();

FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);

以上FilterConfig、RouteConfig和BundleConfig類,都是自定義的類,如果你新建一個mvc4應用程序,則會在App_Start文件夾中,自動生成這些類的定義。我這里只是把WebApiConfig類和RouteConfig類合並成了一個RouteConfig類,代碼如下:

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
        );

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }
}

其他

目前,已經可以正常的運行web api和mvc4,但是如果來增進mvc在web form中的特點

1、如果你需要使用到view,就需要建一個Views文件夾,並從mvc4應用程序相應文件夾拷貝web.config

2、如何能增加創建Area、View、Controller的向導?需要修改項目文件*.csproj中的<ProjectTypeGuids>節點的值為:{E3E379DF-F4C6-4180-9B81-6769533ABE47};{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}。下圖即是創建view時的截圖:

mvc4 and web api

最終效果

下面是asp.net web form和mvc4在同一個站點中時,瀏覽的效果圖:

ASP.NET Web Form

mvc4


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM