视图动态编译生成的代码文件
在视图写一个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>