0

我需要使用相同的表单来显示多个内容,并且我意识到当我添加如下链接时:

    <a href="#A">A</a>

它具有相同的表单和网址,但地址末尾带有#A。我想我可以使用它在同一个表单上显示多个内容。我的想法是在 page_load 方法中使用 C# 代码来检测网址是什么,并对 url 字符串使用 conatins 方法并检测是否有 #A 来更改表单的内容。这是一个例子:

C#代码:

    protected void Page_Load(object sender, EventArgs e)
    {
         string url = HttpContext.Current.Request.Url.AbsoluteUri;
         if(url.Contains("#A"))
         {
              div1.Visible = false; //content 1
              div2.visible = true;  //content 2
         }
    }

asp.net 代码:

    <a href="#A">A</a>
    <div ID="div1" runat="server">
        content 1
    </div>
    <div ID="div2" runat="server">
        content 2
    </div>

我试图将 Page_Load 方法放在脚本标签中,但仍然没有用。我猜由于网址不同,cs代码无效?在我点击链接之前,我知道它会通过 page_load 方法一次。此外,我确实使用了一种方法,可以控制 div1 和 div2,所以这不是问题。我提前感谢大家的帮助!另外,如果我的方式不是完成工作的方式,那么请告诉我任何可能的方式来实现我想要做的事情。

编辑:我不能使用按钮来替换链接...也许是 asp:hyperlink?

4

2 回答 2

3

那是您正在使用的 HTML 超链接,它不会导致回发,因此当您单击它时将永远不会调用 page_load。

如果您想显示使用客户端 JavaScript 的隐藏 div,我会建议您。或者,您可以(例如)使用会导致回发的 asp.net 按钮控件。

于 2013-08-01T15:56:11.767 回答
1

我建议放弃这种anchor with an href方法来支持这一点:

使用 ASP.NET 服务器控件及其单击事件处理程序来管理页面上控件的可见性。

在您的Page_Load中,使页面具有显示控件的初始状态,如下所示:

protected void Page_Load(object sender, EventArgs e)
{
     if(!Page.IsPostBack)
     {
          div1.Visible = false; //content 1
          div2.visible = true;  //content 2
     }
}

现在,您可以使用 ASP.NETButtonLinkButton回发到服务器,而不是锚标记,如下所示:

<asp:Button id="Button1" 
       Text="Click here to change page to B"
       OnClick="Button1_Click" 
       runat="server"/>

现在您有了可以更改控件可见性的事件处理程序代码,如下所示:

protected void Button1_Click(Object sender, EventArgs e)
{
    div1.Visible = true; //content 1
    div2.visible = false;  //content 2
}
于 2013-08-01T15:59:10.927 回答