繁体   English   中英

ASP.NET/C#尝试通过链接在网址末尾的#A表单上使用page_load方法

[英]ASP.NET/C# trying to use page_load method on a form with #A on end of web address through link

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

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

它具有相同的表单和网址,但地址末尾带有#A。我认为我可以使用它在同一表单上显示多个内容。 我的想法是在page_load方法中包含C#代码以检测Web地址是什么,并对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方法放入脚本标签中,但仍然无法正常工作。 我猜因为URL不同,CS代码无效吗? 我知道在单击链接之前,它会通过page_load方法一次。 另外,我确实使用了一种方法,可以给我div1和div2的控件,所以这不是问题。 我预先感谢大家的帮助! 另外,如果我的方法不能胜任工作,请告诉我任何可能的方法来实现我的目标。

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

那是您正在使用的HTML超链接,不会引起回发,因此单击page_load将永远不会被调用。

我建议您是否要显示使用客户端JavaScript的hide div。 或者,您可以(例如)使用asp.net按钮控件,这将导致回发。

我建议anchor with an href方法废弃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.NET ButtonLinkButton代替锚标记,从而将其回发到服务器,如下所示:

<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
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM