Skip to content

Repository files navigation

RazorViewTemplateEngine

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!

支持物理模板文件,监听文件变化自动重新编译 ✨

  • 根据设置的根目录结合通配符筛选模板文件

About

Razor 视图模板引擎

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages