将强类型控件嵌套到母版页ASP.NET中

时间:2010-11-13 17:46:24

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

我有一个使用单个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发送到母版页的自定义控件?什么是最好的方法?这种情况有某种良好的做法或设计模式吗?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

如果您有模型对象,可以将an overload of Html.RenderPartial()提供给:

Html.RenderPartial("ControlPanel", model);