MVC视图动态编译生成的代码文件

视图动态编译生成的代码文件

 

在视图写一个for循环作为标记。

 

在配置文件中自定义动态生成的代码文件存放目录

 

项目运行后,在下面的目录中找到了代码

D:\project_files\test_workspace\AjaxExecute_Demo\AjaxExecute_Demo\vs\92b111f9\845e91ae\App_Web_g5qeivuj.0.cs

namespace ASP 
{
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Net;
    using System.Web;
    using System.Web.Helpers;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.WebPages;
    using System.Web.Mvc;
    using System.Web.Mvc.Ajax;
    using System.Web.Mvc.Html;
    using System.Web.Routing;
    using AjaxExecute_Demo;
    using ClassLibrary1;

        //可以看出MVC视图内的代码会被动态编译成一个class,并继承自System.Web.Mvc.WebViewPage<dynamic>泛型类
    //,其中泛型参数 <dynamic> 最终的类型是通过 控制器内 return view(dynamic); 指定。
    //在生成此代码文件时 视图上 Model 的类型是已经得到确定,这也是视图可以通过 Model.属性 实现智能感应的依据。
    public class _Page_Views_Home_Index_cshtml : System.Web.Mvc.WebViewPage<dynamic>
    {
        public _Page_Views_Home_Index_cshtml() 
        {
        }
        
        protected ASP.global_asax ApplicationInstance 
        {
            get {
                return ((ASP.global_asax)(Context.ApplicationInstance));
            }
        }
        
        public override void Execute() 
        {
            BeginContext("~/Views/Home/Index.cshtml", 0, 2, true);
            WriteLiteral("\r\n");
            EndContext("~/Views/Home/Index.cshtml", 0, 2, true);

            //......
            
            // 这里是使用 Razor视图引擎写在视图上的c# for循环代码
    for (int i = 0; i < 10; i++)
    {

            
            #line default
            #line hidden
BeginContext("~/Views/Home/Index.cshtml", 376, 30, true);

WriteLiteral("        <p>查询视图动态编译生成的代码文件测试: ");

EndContext("~/Views/Home/Index.cshtml", 376, 30, true);

BeginContext("~/Views/Home/Index.cshtml", 407, 1, false);

            
            #line 24 "D:\project_files\test_workspace\AjaxExecute_Demo\AjaxExecute_Demo\Views\Home\Index.cshtml"
                         Write(i);

            
            #line default
            #line hidden
EndContext("~/Views/Home/Index.cshtml", 407, 1, false);

BeginContext("~/Views/Home/Index.cshtml", 408, 6, true);

WriteLiteral("</p>\r\n");

EndContext("~/Views/Home/Index.cshtml", 408, 6, true);

            
            #line 25 "D:\project_files\test_workspace\AjaxExecute_Demo\AjaxExecute_Demo\Views\Home\Index.cshtml"
    }
    }
        }
    }


}

如需自定义 视图代码文件的父类,可在配置文件的以下节点中配置:

<system.web.webPages.razor> 
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <!--自定义父类-->
     <pages pageBaseType="System.Web.Mvc.WebViewPage"> 
        <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="AjaxExecute_Demo" /> 
        <add namespace="ClassLibrary1" /> 
</namespaces> 
</pages> 
</system.web.webPages.razor>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值