中文字幕第五页-中文字幕第页-中文字幕韩国-中文字幕最新-国产尤物二区三区在线观看-国产尤物福利视频一区二区

如何使用Razor視圖引擎名-創新互聯

這篇文章將為大家詳細講解有關如何使用Razor視圖引擎名,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

網站建設哪家好,找創新互聯!專注于網頁設計、網站建設、微信開發、微信小程序定制開發、集團企業網站建設等服務項目。為回饋新老客戶創新互聯還提供了華龍免費建站歡迎大家使用!

首先,用到的Razor域名空間。

usingSystem.Web.Razor;   usingSystem.Web.Razor.Generator;   usingSystem.Web.Razor.Parser;

第一步,動態編譯:解析視圖文件,生成代碼,是的,生成代碼,先。Razor的語法可以說是私有語法,需要先生成標準代碼,然后才編譯,生成我們熟悉的C#類Type。需要注意的是,我下面代碼用的模板基類是我自己的TeamplateBase,后面會給出簡單實現,當然,好處就是靈活性。你也可以直接用Asp.NetMVC的System.Web.Mvc.WebViewPage,不過我沒有試過,也許會有其他問題,不能保證。

publicstaticTypeCompile(stringtemplate_path)   {   //準備臨時類名,讀取模板文件和Razor代碼生成器   varclass_name="c"+Guid.NewGuid().ToString("N");   varbase_type=typeof(TemplateBase<>).MakeGenericType(typeof(T));   vartemplate=File.ReadAllText(template_path);   varhost=newRazorEngineHost(newCSharpRazorCodeLanguage(),()=>   newHtmlMarkupParser())   {   DefaultBaseClass=base_type.FullName,   DefaultClassName=class_name,   DefaultNamespace="YourNameSpace.dynamic",   GeneratedClassContext=   newGeneratedClassContext("Execute","Write",   "WriteLiteral","WriteTo",   "WriteLiteralTo",   "YourNameSpace.TemplateBase")   };   host.NamespaceImports.Add("System");   host.NamespaceImports.Add("YourNameSpaces");   //生成代碼   CodeCompileUnitcode;   using(varreader=newStringReader(template)){   vargeneratedCode=newRazorTemplateEngine(host).GenerateCode(reader);   code=generatedCode.GeneratedCode;   }   //準備編譯參數   var@params=newCompilerParameters   {   IncludeDebugInformation=false,   TempFiles=newTempFileCollection(AppDomain.CurrentDomain   .DynamicDirectory),   CompilerOptions="/target:library/optimize",   GenerateInMemory=false   };   varassemblies=AppDomain.CurrentDomain   .GetAssemblies()   .Where(a=>!a.IsDynamic)   .Select(a=>a.Location)   .ToArray();   @params.ReferencedAssemblies.AddRange(assemblies);   //編譯   varprovider=newCSharpCodeProvider();   varcompiled=provider.CompileAssemblyFromDom(@params,code);   if(compiled.Errors.Count>0){   varcompileErrors=string.Join("rn",compiled.Errors.Cast()   .Select(o=>o.ToString()));   thrownewApplicationException("FailedtocompileRazor:"+   compileErrors);   }   //編譯成功后,返回編譯后的動態Type   returncompiled.CompiledAssembly.GetType("Skight.Arch.Presentation.Web.Core   .ViewEngins.Razor.dynamic."+class_name);   }

怎樣使用Razor視圖引擎名

第二步就簡單多了,就和任何靜態類一樣,用反射創建實例,然后復制Model對象執行模板,最后輸出結果是,就自動吧Model類的數據嵌入了。

publicstaticstringRender(Tmodel,stringtemplate_path)   {   vartype=Compile(template_path);   //創建視圖實例   varinstance=(TemplateBase)Activator.CreateInstance(type);   //執行模板(把數據嵌入文件)   instance.Model=model;   instance.Execute();   //輸出最終結果   varresult=instance.Result;   returnresult;   }

最后,看看視圖模板類,一個基類和一個泛型基類,后者用于前類型Model

publicabstractclassTemplateBase   {   publicstringLayout{get;set;}   publicUrlHelperUrl{get;set;}   publicFuncRenderBody{get;set;}   publicstringPath{get;internalset;}   publicstringResult{get{returnWriter.ToString();}}   protectedTemplateBase()   {   }   publicTextWriterWriter   {   get   {   if(writer==null)   {writer=newStringWriter();   }   returnwriter;   }   set{   writer=value;   }   }   privateTextWriterwriter;   publicvoidClear(){   Writer.Flush();   }   publicvirtualvoidExecute(){}   publicvoidWrite(object@object){   if(@object==null){   return;   }   Writer.Write(@object);   }   publicvoidWriteLiteral(string@string){   if(@string==null){   return;   }   Writer.Write(@string);   }   publicstaticvoidWriteLiteralTo(TextWriterwriter,stringliteral){   if(literal==null){   return;   }   writer.Write(literal);   }   publicstaticvoidWriteTo(TextWriterwriter,objectobj){   if(obj==null){   return;   }   writer.Write(obj);   }   }   publicabstractclassTemplateBase:TemplateBase   {   publicTModel{get;set;}   }

關于“如何使用Razor視圖引擎名”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

文章名稱:如何使用Razor視圖引擎名-創新互聯
本文鏈接:http://www.2m8n56k.cn/article14/dehede.html

成都網站建設公司_創新互聯,為您提供網站改版小程序開發微信小程序全網營銷推廣網站設計建站公司

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:[email protected]。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

搜索引擎優化
主站蜘蛛池模板: 女人被男人躁得好爽免费视频免费 | 成人毛片1024你懂的 | 国产国产成人人免费影院 | 亚洲欧美精品国产一区色综合 | 成人免费视频在线看 | 中文字幕一二区 | 国产精品视_精品国产免费 国产精品视频久 | 久久精品操 | 欧美精品v欧洲精品 | 亚洲国产欧美在线成人aaaa | 在线观看亚洲精品专区 | 日韩在线亚洲 | 国产一区二区三区不卡免费观看 | 91成人午夜性a一级毛片 | 国产乱子伦露脸对白在线小说 | 国产片一级 | 国产人成精品综合欧美成人 | 日韩黄色毛片 | 182福利视频| 老色99久久九九精品尤物 | 亚洲欧美日韩精品永久在线 | 国产成人午夜性视频影院 | 亚洲精品国产精品一区二区 | 久久国产精品永久免费网站 | 成人一级免费视频 | 免费看欧美日韩一区二区三区 | 一区二区三区在线免费视频 | 日韩欧美在线视频 | 91精品国产色综合久久不 | 玖玖玖视频在线观看视频6 玖玖影院在线观看 | 欧美日韩高清性色生活片 | 日本加勒比在线视频 | 97在线视频精品 | 国产日产久久 | 欧美一级爆毛片 | 国产孕妇做受视频在线观看 | 国内精品视频九九九九 | 国产成人黄网址在线视频 | 免费国产精品视频 | 免费观看亚洲 | 国产高清国产专区国产精品 |