零度空间

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

最近开始研究MVC框架,想要在项目中使用MVC,但遇到的第一个问题就是使用.NET的MVC首先要创建一个MVC的Web应用程序,基于目前我们项目组织结构,都是把个体项目编译后拷贝到一个总的WEB站点项目下,而新建的MVC项目仅仅是拷贝是无法正常运行的,耗费了一个下午时间总算搞通了。MVC代码想要在普通的WEB应用程序中使用需要配置以下几个地方。

 

 1. 修改Global.asax。

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

            routes.MapRoute(
                
"Default"// 路由名称
                "{controller}/{action}/{id}"// 带有参数的 URL
                new { controller = "Home", action = "Index", id = UrlParameter.Optional } // 参数默认值
            );

        }

        
protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            RegisterRoutes(RouteTable.Routes);
        }

 

 

 2. 添加以下几个节点内容 Web.config

 

  <system.web>
    
<compilation debug="true">
      
<assemblies>
        
<add assembly="System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        
<add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
      
</assemblies>
    
</compilation>
    
<pages>
      
<controls>
        
<add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        
<add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
      
</controls>
      
<namespaces>
        
<add namespace="System.Web.Mvc"/>
        
<add namespace="System.Web.Mvc.Ajax"/>
        
<add namespace="System.Web.Mvc.Html"/>
        
<add namespace="System.Web.Routing"/>
      
</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>

 

 

 

3. 在普通Web应用程序中引用 System.Web.Mvc.dll,并设置“复制本地”属性为True,如下图

 

4. csproj文件的修改(普通的融合不需要以下修改,这点是纯粹给自己做备忘用的) 

代码
  <!--正常的MVC项目会有以下节点-->
  
<Target Name="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
    
<AspNetCompiler VirtualPath="temp" PhysicalPath="$(ProjectDir)" />
  
</Target>


  
<!--加入编译操作的节点,应该把“Condition="'$(MvcBuildViews)'=='true'"”移到AspNetCompiler标签下,否则无法正常编译或编译操作无法正常执行-->
  
<Target Name="AfterBuild">
    
<AspNetCompiler VirtualPath="temp" PhysicalPath="$(ProjectDir)" Condition="'$(MvcBuildViews)'=='true'" />
    
<Copy SourceFiles="@(Content)" DestinationFiles="@(Content->'..\BitAuto.Ucar.Transtar.Web\%(RelativeDir)%(Filename)%(Extension)')" SkipUnchangedFiles="true" />
    
<CreateItem Include="$(TargetDir)*.dll;$(TargetDir)*.pdb">
      
<Output ItemName="dllFiles" TaskParameter="Include" />
    
</CreateItem>
    
<Copy SourceFiles="@(dllFiles)" DestinationFolder="..\BitAuto.Ucar.Transtar.Web\bin" SkipUnchangedFiles="true" />
  
</Target>

 

 5. .NET3.5和.NET4.0的MVC框架中,页面的C#代码标签不一样

<!--.NET3.5-->
<%= Html.TextBoxFor(m => m.UserName)%>
<!--.NET4.0-->
<%: Html.TextBoxFor(m => m.UserName)%>
<!--区别只在于一个是“=”号,一个是“:”号-->

 

 

 

posted on 2010-08-05 16:34  Diago  阅读(1120)  评论(0编辑  收藏  举报