2009-10-26 77 views
0

我已阅读相关问题,但我找不到适合我的问题(或我只是愚蠢)的问题。如何动态编译一个ViewUserControl(Asp.Net MVC)或Asp.Net控制

基本上我有一个工厂呈现某个“模板”,该模板包含某些“实体”。这些实体可以呈现自己并具有无效的Render方法,该方法构造HTML并将其返回给模板工厂。

现在,为了可维护性,这是一场噩梦。如果客户想要在html之间留出空间,dll需要重新编译(这太可怕了!)

我需要一种方法将逻辑+ HTML从无效渲染方法移出某种控制,解析控件并在运行时返回HTML。这样代码可以相对保持良好。

我使用Asp.Net MVC和模板工厂是一个类库。有什么办法可以做到这一点?

谢谢!

回答

1

听起来像你想要的是每个“实体”的强类型的ViewUserControl。这基本上是我在我正在开发的一个项目中实现的小部件。每个小部件都有它自己的小部件模型和一个局部视图(ViewUserControl),该部分视图强制类型化为该模型。小部件使用模型的属性来呈现该小部件的视图。

+0

这正是我想要完成的!谢谢!现在问题仍然存在,我该如何做到这一点。那么工厂必须返回一个控制名称+实例化模型列表,并且该视图只是遍历每个项目并呈现它们 - Html.RenderPartial(“EntityName”,EntityModel)? – 2009-10-26 14:30:14

+1

基本上我是这么做的,虽然我把所有模型放在页面模型的一个枚举中,并且在我的基础控制器上有一个方法,它使用一个工厂来为该页面创建所有的小部件并将它们放入这个主模型。在页面上,我只是遍历enumerable并让它调用RenderPartial以及窗口小部件模型想要渲染的部分:foreach(Model.Widgets中的var小部件){Html.RenderPartial(widget.ViewName,widget.Model); } – tvanfosson 2009-10-26 14:38:41

+0

非常感谢!我会执行这个! – 2009-10-26 14:45:30