如何将参数从aspx页面传递到母版页面,以便加载不同的菜单?



我有一个webforms页面,带有项目下拉列表和"Go"按钮(第一页)。它有自己的主页

当用户从列表中选择项目并点击"Go"我根据所选项目重定向到另一个主页。当项目主页加载时,我想根据用户在第一页的下拉列表中选择的内容更改该页面的asp:菜单项(根据项目的含义)。所以每个项目都有自己的asp导航菜单,但我想使用相同的母版页为所有项目的主页,而不是为所有项目创建不同的母版页。

如何将参数从第一页传递到第二页的母版页?

一些来自第一页的代码:

<div>
        <table width="250">
            <tr>
                <td align="left">
                    <dx:ASPxComboBox runat="server" ID="CmbProject" Height="20">
                        <Items>
                            <dx:ListEditItem Text="Project1" Value="0"></dx:ListEditItem>
                            <dx:ListEditItem Text="Project2" Value="1"></dx:ListEditItem>
                        </Items>
                    </dx:ASPxComboBox>
                </td>
                <td>
                    <dx:ASPxButton runat="server" ID="BtnGo" OnClick="BtnGo_Click" Text="Go">
</dx:ASPxButton>
                </td>
            </tr>
        </table>
    </div>

cs

public partial class FirstPage: System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    protected void BtnGo_Click(object sender, EventArgs e)
    {
        if (Convert.ToInt32(CmbProject.Value) == 0)
        {
            Response.Redirect("../Project1.aspx);

        }
        else if (Convert.ToInt32(CmbProject.Value) == 1)
        {
            Response.Redirect("../Project2.aspx);
        }
    }
}

我可以传递一个参数与查询字符串到第二页,但如何第二页的母版页可以得到该参数之前加载第二页,以加载当前导航菜单?

首页。cs


protected void BtnGo_Click(object sender, EventArgs e)
    {
        if (Convert.ToInt32(CmbProject.Value) == 0)
        {
            Response.Redirect("../Project1.aspx?Project=" + CmbProject.Text);

        }
        else if (Convert.ToInt32(CmbProject.Value) == 1)
        {
            Response.Redirect("../Project2.aspx?Project=" + CmbProject.Text);
        }
    }

我通过在主页页的页面加载事件中获取内容页的url来解决这个问题。

MasterPage.cs

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
string strPage = Page.AppRelativeVirtualPath;
if (strPage.Contains("/Project1/"))
{
PanelProject1.Visible = true;
PanelProject2.Visible = false;
}
else if (strPage.Contains("/Project2/"))
{
PanelProject1.Visible = false;
PanelProject2.Visible = true;
}
}

最新更新