Razor 视图模板引擎
1、普通用法
publicclassRazorViewRunTimeCompileTest{readonlyIRazorEngine_razorEngine;publicRazorViewRunTimeCompileTest(){_razorEngine=RazorEngine.Create(options =>{//虚拟路径和模板内容options.TemplateStringCollections.Add(newTemplateContentCollection(){VirtualPath="/Views/Home/Index.cshtml",Content=@"Hello @Model.Name, Welcome to RazorViewTemplateEngine!"});options.TemplateStringCollections.Add(newTemplateContentCollection(){VirtualPath="/Views/Home/About.cshtml",Content=@"Hello @Model.Name, Welcome to RazorViewTemplateEngine!",//强类型模板InheritanceType=typeof(Student)});}, options =>{//添加程序集引用options.AddAssemblyReference(typeof(Student).Assembly);});}[Fact]publicasyncTaskshould_compile_dynamic_success(){varresult=await_razorEngine.CompileDynamicAsync("/Views/Home/Index.cshtml",new{Name="Alx"});Assert.Equal("Hello Alx, Welcome to RazorViewTemplateEngine!",result);}[Fact]publicasyncTaskshould_compile_stronglyTyped_success(){varresult=await_razorEngine.CompileGenericAsync("/Views/Home/About.cshtml",newStudent{Name="Alx"});Assert.Equal("Hello Alx, Welcome to RazorViewTemplateEngine!",result);}}2、依赖注入
publicclassDependencyInjectionTest{IServiceProvider_serviceProvider;publicDependencyInjectionTest(){varservices=newServiceCollection();services.AddRazorViewTemplateEngine(options =>{options.TemplateStringCollections.Add(newTemplateContentCollection(){VirtualPath="/Views/Home/Index.cshtml",Content=@"Hello @Model.Name, Welcome to RazorViewTemplateEngine!",});options.TemplateStringCollections.Add(newTemplateContentCollection(){VirtualPath="/Views/Home/About.cshtml",Content=@"Hello @Model.Name, Welcome to RazorViewTemplateEngine!",InheritanceType=typeof(Student)});},options =>{options.AddAssemblyReference(typeof(Student).Assembly);});_serviceProvider=services.BuildServiceProvider();}[Fact]publicvoidshould_get_service_success(){varrazorEngine=_serviceProvider.GetService<IRazorEngine>();Assert.NotNull(razorEngine);}[Fact]publicvoidshould_compile_dynamic_success(){varrazorEngine=_serviceProvider.GetService<IRazorEngine>();varresult=razorEngine.CompileDynamicAsync("/Views/Home/Index.cshtml",new{Name="Alx"}).Result;Assert.Equal("Hello Alx, Welcome to RazorViewTemplateEngine!",result);}[Fact]publicasyncTaskshould_compile_stronglyTyped_success(){varrazorEngine=_serviceProvider.GetService<IRazorEngine>();varresult=awaitrazorEngine.CompileGenericAsync("/Views/Home/About.cshtml",newStudent{Name="Alx"});Assert.Equal("Hello Alx, Welcome to RazorViewTemplateEngine!",result);}}3、支持物理模板文件
@inheritsRazorViewTemplateEngine.Core.RazorViewPage
Hello @Model.Name,Welcome to RazorViewTemplateEngine!支持物理模板文件,监听文件变化自动重新编译 ✨
- 根据设置的根目录结合通配符筛选模板文件