我正处于构建渲染框架的阶段,以便以不同的格式渲染我的模型。
我的想法如下:
public class ResidenceRendererShort : IRender<Residence> {
public string Format() {
return "short";
}
public string Render(Residence content) {
return content.Name; // Could return a whole lot of HTML
}
}
我可以使用不同格式的多个,并且使用Ninject DI将它们全部注入到我的RenderingService中,在那里我获得了使用诸如以下方法找到正确渲染的方法。 FindRendererFor(Type type, string format)
现在我的问题是,如何在剃刀中创建一个标签,它将使用渲染服务并应用正确的渲染?我一直在研究HtmlHelpers
,但它们是静态方法,我无法将RenderingService
注入其中。
我以为我可以创建类似的东西:
@Model my.namespace.Residence
@Html.RenderObject(Model, "short");
我是否遗漏了某些内容,或者有人知道如何实现这一目标?
答案 0 :(得分:2)
你自杀了。只需使用显示/编辑器模板。如果您的课程以~/Views/Shared/DisplayTemplates
或~/Views/Shared/EditorTemplates
命名,在这种情况下为Residence.cshtml
,则Razor会在您的课程传递给Html.DisplayFor
时使用此视图或Html.EditorFor
。