Razor速记
1、语法
@{ int c=2; } @for(int i=0;i<c;i++) { @i @:@i @:select @:select @i select @i //@for 嵌套了,抛错
}
select @c |
2、移除模板
关键是要创建配置
static ITemplateServiceConfiguration config = new TemplateServiceConfiguration();
public static void Init() { var service = RazorEngineService.Create(config); RazorEngine.Engine.Razor = service; }
/// <summary> /// 检索多级模板,保留目录结构 /// </summary> /// <param name="path"></param> public static List<string> LoadAllTemplate(string path) { path = path.TrimEnd('\\', '/'); List<string> list = new List<string>(); ; foreach (string s in new List<string>(System.IO.Directory.GetFiles(path, "*.t", System.IO.SearchOption.AllDirectories))) { //文件名后缀 string keyName = string.Format("{0}\\{1}", System.IO.Path.GetDirectoryName(s).Substring(path.Length + 1), System.IO.Path.GetFileNameWithoutExtension(s)).TrimStart('\\'); list.Add(keyName); var key = new NameOnlyTemplateKey(keyName, ResolveType.Global, null); string razorTemplate = System.IO.File.ReadAllText(s, Encoding.UTF8); RazorEngine.Engine.Razor.AddTemplate(key, new RazorEngine.Templating.LoadedTemplateSource(razorTemplate)); RazorEngine.Engine.Razor.Compile(key, typeof(RazorOption)); } return list; }
public static void Test() { LoadAllTemplate(System.IO.Path.GetFullPath("Templates")); RazorOption option = new RazorOption() { EMail = "1@1.1", NameSpace = "test", Registeredorganization = "bjzy" }; option.MetaString = "{Name:\"Test\"}"; //Console.WriteLine(option.ToMeta<Model.Table>()); //option.ObjectType = Enums.enumObjectType.Table; System.IO.TextWriter sw = new System.IO.StringWriter(); ITemplateKey key = RazorEngine.Engine.Razor.GetKey("ExportData\\Insert"); //Console.WriteLine(Newtonsoft.Json.JsonConvert.SerializeObject(option, Newtonsoft.Json.Formatting.Indented)); RazorEngine.Engine.Razor.Run(key, sw, typeof(RazorOption), option); string fileName = System.Text.RegularExpressions.Regex.Match(sw.ToString(), @"(?<=\* 文件名:).*").Value.TrimEnd('\r', '\n'); (config.TemplateManager as DelegateTemplateManager).RemoveDynamic(key); RazorEngine.Engine.Razor.AddTemplate(key, "@DateTime.Now.ToString()"); RazorEngine.Engine.Razor.Compile(key, typeof(RazorOption)); RazorEngine.Engine.Razor.Run(key, sw, typeof(RazorOption), option); Console.Write(sw.ToString());
} |
3、嵌入方法或者函数
@helper 或 @function (貌似不支持)
参考 http://www.cnblogs.com/hbb0b0/p/5104027.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗