17. RazorEngine works in .NET app
var tpl = "My Name is @Model.Name !";
var model = new { Name = "do_aki" };
MessageBox.Show(
RazorEngine.Razor.Parse(tpl, model)
);
WinForms ok
WPF ok
Console ok
Nuget でさくっと入るので便利
https://www.nuget.org/packages/RazorEngine/
18. layout in RazorEngine
var layout = @"
header
@RenderBody()
footer";
RazorEngine.Razor.Compile(layout, "mylayout");
var body = @"
@{
Layout = ""mylayout"";
}
body";
var compiled = RazorEngine.Razor.Parse(body, model);
26. @{
var now = DateTime.Now;
}
今日は@now.ToShortDateString() です。
@* 時刻によって挨拶切り替える*@
@if (now.Hour < 12) {
<p>おはよう</p>
} else if (21 <= now.Hour) {
<text>おやすみ</text>
}
code
m m
markup
m
code
code
code
c
コード部とマークアップ部に分離
27. public class __CompiledTemplate {
public void Execute() {
var now = DateTime.Now;
WriteLiteral(“今日は“);
Write(now.ToShortDateString());
WriteLiteral (” です。rn”);
if (now.Hour < 12) {
WriteLiteral(“<p>おはよう</p>”)
} else if (21 <= now.Hour) {
WriteLiteral(“おやすみ”)
class を構築
}
}
(実際にはCodeDom.CodeCompileUnit)
}