例如A.razortemplate
<html>
<title>@Page.Title</title>
<keywords>@Page.Title</keywords>
<body>
crumb:<a href="">@Page.Title</a>><a href="">@Post.Title</a>
<h3>@Post.Title<h3>
@Post.Body
by-@User.PostAuthor
</body>
</html>
上面的代码在一个模板(A)中,它包含三个@Model对象,@ Page,@ Post,@ User.i读取RazorEngine代码,发现只需将一个@Model patameter传递给模板,来自RazorEngine项目的以下代码。
protected virtual ITemplate CreateTemplate<T>(Type templateType, T model)
{
var instance = CreateTemplate(templateType);
SetModel(instance, model);
return instance;
}
我讨厌只能传递一个@ Model,我需要一些更灵活的方法,我可以随时从模板中删除crumb语句,可以添加帖子的时间。
对于上述问题,可能是我可以为@ page,@ post,@ user创建一个新类并创建三个属性,我认为这不是完美的解决方案。
顺便说一下,我想把RazorEngine作为前端模板(比如字符串模板等),ASP.NET作为后端只做sql操作并将数据传递到前面 - end.someone可以给出一些建议吗?谢谢。
答案 0 :(得分:1)
RazorEngine默认使用单数Model
属性。此属性可以是您喜欢的任何类型,因此为什么不创建复合模型:
public class TemplateModel
{
public PostModel Post { get; set; }
public UserModel User { get; set; }
public PageModel Page { get; set; }
}
通过这种方式,您可以传递单个模型,并以下列方式访问属性:
@Model.User.PostAuthor