.NET新手在这里。
我有一个包含许多部分的页面。我想创建另一个页面,以获得指向此页面的超链接,以及指向其中部分的超链接。
如果用户点击主页链接,我希望所有部分都可见,但只有用户询问的部分是否已点击部分超链接。
如何从上一页的链接设置非请求控件的可见属性(在asp:Panel中),因此当请求不同的部分时它们不会出现在页面上?
许多人mcalex
答案 0 :(得分:0)
您可以检查Request.ServerVariables["HTTP_REFERER"]
但是,如果用户刷新页面,则会更改。
答案 1 :(得分:0)
您有以下选项
当您单击主页面上的超链接时,将面板通过querystring或session作为参数启用,如链接按钮
Response.Redirect("~/myPage.aspx?secId=info")
然后在您的重定向页面上设置pageLoad中的所有面板Visibility=false
,检查querstring值&将面板的visible属性设置为true或false
if(!Page.IsPostBack)
{
string panelToEnable= Request.QueryString["secId"];
switch(panelToEnable)
{
case("info"):
panelInfo.Visible=true;
break;
case("details");
panelDetails.Visible=true;
break;
default:
panelMaster.Visible=true;
break;
}
}
或者,您可以将部分链接放在重定向页面内。进一步简化(删除查询字符串等)
答案 2 :(得分:0)
您有两种方法可以解决此问题:
使用查询字符串:在查询字符串上传递不同的参数值。在目标页面/控件中,检查查询字符串并根据您的要求使该部分可见/不可见
使用会话数据:使用特定密钥存储模式。单击其他页面的链接按钮时,使用回调功能(在CSharp中)设置会话数据并重定向到目标页面。此页面将检查存储在会话状态中的数据,并使该部分可见/不可见。
优点&缺点:
第一个解决方案可用于纯HTML链接,但参数显示在查询字符串中,因此用户可以更改它以显示其他部分。
第二个解决方案不能用于纯HTML链接,但它会阻止用户更改会话状态中的值。所以它更安全。