2012-03-29 2 views
0

мою структуру, как это: главная страница ASPX (веб-форма) 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 там должен быть ссылкой на эти UserControls, что я хочу, чтобы загрузить на мой default.aspx

Я должен Diferent пользовательских элементов управления:

управление пользователем 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

+0

Добро пожаловать. Рад, что у вас это работает :-) –

Смежные вопросы