在ASP.NET MVC中动态添加ViewUserControl

时间:2009-06-02 19:11:01

标签: asp.net-mvc

我想知道在运行时添加ViewUserControl(到ViewPage)是否存在任何已知问题。如果我以声明方式添加控件,它可以正常工作,但如果我以编程方式添加控件(在本例中的代码隐藏文件中)则不行。我没有收到错误,它只是没有呈现控件,但是通过调试器确实会确认正在调用页面生命周期中的相关方法。

我确实意识到在ASP.NET MVC中使用代码隐藏文件并不完全犹豫不决,但我确实有理由这样做。

2 个答案:

答案 0 :(得分:5)

发送要加载的控件列表并将其传递给视图模型。

控制器操作:

var controlsToLoad = new List<string>();
controlsToLoad.Add("foo");

return View(controlsToLoad);

查看:

<% foreach (var control in Model as List<string>) { %>
    <% Html.RenderPartial(control); %>
<% } %>

这将使您远离代码,并且仍然允许您在控制器中动态指定要在视图中加载哪些控件。

答案 1 :(得分:0)

或者,如果您需要其他功能,您可以获得更加流畅的效果,并将扩展方法中的上述建议包装到您的ViewPage类扩展方法中。