取消

使用Razor引擎模板生成字符串

使用Razor引擎模板生成字符串,类似于T4模板,T4要学语法,Razor就是就用c#了 用处:代码生成器


安装依赖包

1
Install-Package RazorEngine.NetCore

生成代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
class Program
{
    static void Main(string[] args)
    {
        //简单使用
        string template = "Hello @Model.Name, welcome to RazorEngine!";
        var result = Engine.Razor.RunCompile(template, "templateKey", null, new { Name = "World" });
        Console.WriteLine(result);

        //带html标签
        string template1 = "@Raw(Model.Data)";
        var model1 = new { Data = "My raw double quotes <p>appears</p> here \"hello!\"" };

        string result1 = Engine.Razor.RunCompile(template1, "templateKey1", null, model1);

        Console.WriteLine(result1);

        //使用模板文件
        string filePath = "StudentTemplate.cshtml";
        var userTemplate= File.ReadAllText(filePath);
        string result2= Engine.Razor.RunCompile(userTemplate, Guid.NewGuid().ToString(), typeof(User), new User
        {
            CreateTime = DateTime.Now,
            EmailAddress = "<p>125880321@qq.com</p>",
            UserName = "IGeekFan"
        });
        Console.WriteLine(result2);
    }
}
public class User
{
    public string UserName { get; set; }
    public string EmailAddress { get; set; }
    public DateTime CreateTime { get; set; }
}

cshtml模板

1
2
3
4
5
6
7
8
9
10
11
@{
    var gen = Model as RazorTemplate.User;
}

//=============================================================
// 创建人:            @gen.UserName
// 创建时间:          @gen.CreateTime
// 邮箱:             @gen.EmailAddress
//==============================================================
<h1>123</h1>
@Raw("<a>www.baidu.com<a>")

运行截图

预览


参考资料

本文会经常更新,请阅读原文: https://dashenxian.github.io/post/%E4%BD%BF%E7%94%A8Razor%E5%BC%95%E6%93%8E%E6%A8%A1%E6%9D%BF%E7%94%9F%E6%88%90%E5%AD%97%E7%AC%A6%E4%B8%B2 ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

知识共享许可协议

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名 小神仙 (包含链接: https://dashenxian.github.io ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 (125880321@qq.com)

登录 GitHub 账号进行评论