代码之家  ›  专栏  ›  技术社区  ›  Rodrick Chapman

在ASP.NET MVC中动态添加ViewUserControl

  •  1
  • Rodrick Chapman  · 技术社区  · 15 年前

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

    我确实意识到,在ASP.NET MVC中使用代码隐藏文件并不太公平,但我确实有理由这样做。

    2 回复  |  直到 15 年前
        1
  •  5
  •   John Sheehan    15 年前

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

    控制器动作:

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

    观点:

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

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

        2
  •  0
  •   Wyatt Barnett    15 年前

    或者,如果需要其他功能,您可以使用扩展方法将上述建议包装到ViewPage类的扩展方法中。