我有一个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;
}
}