在.NET控件上设置可见属性

时间:2012-03-15 05:02:17

标签: asp.net dynamic

.NET新手在这里。

我有一个包含许多部分的页面。我想创建另一个页面,以获得指向此页面的超链接,以及指向其中部分的超链接。

如果用户点击主页链接,我希望所有部分都可见,但只有用户询问的部分是否已点击部分超链接。

如何从上一页的链接设置非请求控件的可见属性(在asp:Panel中),因此当请求不同的部分时它们不会出现在页面上?

许多人

mcalex

3 个答案:

答案 0 :(得分:0)

您可以检查Request.ServerVariables["HTTP_REFERER"]

但是,如果用户刷新页面,则会更改。

答案 1 :(得分:0)

您有以下选项

  1. 将每个部分控件包装在asp.net面板服务器控件
  2. 当您单击主页面上的超链接时,将面板通过querystring或session作为参数启用,如链接按钮

    Response.Redirect("~/myPage.aspx?secId=info")
    
  3. 然后在您的重定向页面上设置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;
          }
     }
    
  4. 或者,您可以将部分链接放在重定向页面内。进一步简化(删除查询字符串等)

答案 2 :(得分:0)

您有两种方法可以解决此问题:

  1. 使用查询字符串:在查询字符串上传递不同的参数值。在目标页面/控件中,检查查询字符串并根据您的要求使该部分可见/不可见

  2. 使用会话数据:使用特定密钥存储模式。单击其他页面的链接按钮时,使用回调功能(在CSharp中)设置会话数据并重定向到目标页面。此页面将检查存储在会话状态中的数据,并使该部分可见/不可见。

  3. 优点&缺点:

    • 第一个解决方案可用于纯HTML链接,但参数显示在查询字符串中,因此用户可以更改它以显示其他部分。

    • 第二个解决方案不能用于纯HTML链接,但它会阻止用户更改会话状态中的值。所以它更安全。