使用MVC创建可重用的UI组件

时间:2014-02-04 07:54:51

标签: asp.net-mvc razor components renderer

我正处于构建渲染框架的阶段,以便以不同的格式渲染我的模型。

我的想法如下:

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");

我是否遗漏了某些内容,或者有人知道如何实现这一目标?

1 个答案:

答案 0 :(得分:2)

你自杀了。只需使用显示/编辑器模板。如果您的课程以~/Views/Shared/DisplayTemplates~/Views/Shared/EditorTemplates命名,在这种情况下为Residence.cshtml,则Razor会在您的课程传递给Html.DisplayFor时使用此视图或Html.EditorFor