我想知道在运行时添加ViewUserControl(到ViewPage)是否存在任何已知问题。如果我以声明方式添加控件,它可以正常工作,但如果我以编程方式添加控件(在本例中的代码隐藏文件中)则不行。我没有收到错误,它只是没有呈现控件,但是通过调试器确实会确认正在调用页面生命周期中的相关方法。
我确实意识到在ASP.NET MVC中使用代码隐藏文件并不完全犹豫不决,但我确实有理由这样做。
答案 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类扩展方法中。