【问题标题】:Nesting strongly typed control into master page ASP.NET将强类型控件嵌套到母版页 ASP.NET
【发布时间】:2010-11-14 02:54:20
【问题描述】:

我有一个使用单个 master.page 的网站。在 master.page 中,我有一个名为“ControlPanel”的强类型用户控件 (.ascx)。它的类型是 ControlPanelViewModel。

这里是主页面 - MasterFrame.master:

<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage" %>

<body>
    <% Html.RenderPartial("ControlPanel"); %> <!-- Here I need to pass the ControlPanelViewModel -->

    <!-- main content area -->
</body>
</html>

这里是自定义控制页面——ControlPanel.ascx:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<ControlPanelViewModel>" %>
<!-- Some content which are using the ControlPanelViewModel -->

现在的问题是如何将正确的 ControlPanelViewModel 发送到母版页的自定义控件?最好的方法是什么?对于这种情况,是否有某种良好的实践或设计模式?

【问题讨论】:

    标签: c# asp.net asp.net-mvc asp.net-mvc-2


    【解决方案1】:

    Svick 感谢您的回答,但您的方法几乎是绑定视图模型。我想这是大多数 ASP.NET 人员使用的,因为我在几篇文章中读到过它。不幸的是,这对我的网站来说还不够好,因为我有太多现有的代码和视图模型。在我看来,更好的方法是使用 Html.RenderAction 方法,它调用你的控制器方法。

    【讨论】:

      【解决方案2】:

      如果你有模型对象,有an overload of Html.RenderPartial()你可以给它:

      Html.RenderPartial("ControlPanel", model);
      

      【讨论】:

      • 我知道 :),所以你说最好的方法是使用强类型母版页?
      • 是的,可能使用this method
      • 我喜欢它,但不想将我所有的视图模型绑定到母版页模型视图(从它继承)。我可以在没有继承部分的情况下使用此方法吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多