2012-03-29 65 views
0

我的结构是这样的: 母版页 ASPX(Web表单) ASCX(用户控件)网络用户控制改变动态

我有一个师傅带一个菜单:

<asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="false" 
       IncludeStyleBlock="false" Orientation="Horizontal"> 
<Items> 
      <asp:MenuItem Text="Parameters" Value="Parameters"> 
        <asp:MenuItem NavigateUrl="~/Default.aspx" Text="Default" Value="def" /> 
    </asp:MenuItem> 
</Items> 
</asp:Menu> 

里面的MenuItem有一个链接到这些用户控件,我想加载在我的default.aspx

我必须有不同的用户控件:

用户控制1:

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="ucTest1.ascx.cs" Inherits="ucTest1" %> 
<table> 
<tr> 
    <td> 
     <asp:Label ID="Label1" runat="server" Text="TEST 1 ASCX"></asp:Label> 
    </td> 
</tr> 
<tr> 
    <td> 
     <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
    </td> 
</tr> 
</table> 

用户控制2:

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="ucTest2.ascx.cs" Inherits="ucTest2" %> 
<table> 
<tr> 
    <td> 
     <asp:Label ID="Label2" runat="server" Text="TEST 2 ASCX"></asp:Label> 
    </td> 
</tr> 
<tr> 
    <td> 
     <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox> 
    </td> 
</tr> 
</table> 

,这里是我的Default.aspx

<%@ Page Title="" Language="C#" MasterPageFile="~/Master/Site.master" AutoEventWireup="true" 
CodeFile="Default.aspx.cs" Inherits="Default" %> 
<%@ Register Src="~/ucTest1.ascx" TagName="ucTest1" TagPrefix="uc1" %> 
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="Server"> 
    <uc1:ucTest1 ID="ucTest1" runat="server" /> 
</asp:Content> 

它的工作好为止,但我想就这些的菜单项我的母版页在相同的Default.aspx中在这两个用户控件之间切换。 所以当我点击test1-menuitem时,它会将ucTest1带入我的default.aspx,当点击test2-menuitem时,我也会将uctest2带入我的default.aspx。

我不知道这是否可以做到。我真的很感谢你的帮助!

谢谢!

回答

1

我会使用QueryString来确定显示哪个用户控件。例如:

<asp:MenuItem NavigateUrl="~/default.aspx?uc=test" ...> 

设置用户控制,以虚假的默认可见性,并在Page_Load使用一点逻辑来决定哪个应该是可见的:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     switch (UserControlType) 
     { 
      case "test": 
       ucTest1.Visible = true; 
      ... 
     } 
    } 
} 

private string UserControlType 
{ 
    get { return Request.QueryString["uc"]; } 
} 
+0

太感谢你了,它的作品精彩=) – James 2012-03-29 16:54:21

+0

非常欢迎。真高兴你做到了 :-) – 2012-03-29 17:03:46