0

ユーザーがクリックした後、ハイパーリンクのテキストを変更しようとしています。ハイパーリンクは次のとおりです。

   <asp:hyperlink id="OpenClose" runat="server" onclick="OpenClose_Click" AutoPostBack="true">Close</asp:hyperlink> 

そして、ここに私のコードビハインドがあります:

     protected void Page_Load(object sender, EventArgs e)
{
    OpenClose.Attributes.Add("onclick", "OpenClose_Click");
}
protected void OpenClose_Click(object sender, EventArgs e)
{
    if (OpenClose.Text == "Close")
        OpenClose.Text = "Open";
    else
        OpenClose.Text = "Close";
}

問題は、関数 OpenClose_Click が表示されないように見えることです。理由はわかりません。これを行う別の方法はありますか、それとも何か不足していますか?

編集

これがaspxコード全体です

   <%@ Page Title="" Language="C#" MasterPageFile="../MasterPageLite.master"                  AutoEventWireup="true" CodeFile="testPageLoad2.aspx.cs" Inherits="BuilderPages_testPageLoad2" %>

    <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %>


 <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" Runat="Server">
<div class="left_side">
<form id="form1" runat="server">

 This is the second test page I am making. Practice collapse and expand panels!

<div class="msg_list">
<h3 class="msg_head">Header-1</h3>
<div class="msg_body">
Collapse this panel!!
<asp:button runat="server" text="Can you see me?" />
 </div>
<h3 class="msg_head">Header-2</h3>
<div class="msg_body">
Congratulations you opened the panel!!
</div>
<h3 class="msg_head">Header-3</h3>
<div class="msg_body">
The third panel has been opened!!
</div>
</div>

</form>
</div>

<div class="right_side">
<div class="lBorder">
<asp:Panel ID="OpenClosePanel" runat="server"></asp:Panel>
<asp:HyperLink id="OpenClose" runat="server" AutoPostBack="true" style="cursor:pointer; text-decoration:underline;">Show/Hide</asp:HyperLink>

 </div>

 <div class="rscontent">
 <p>
 Lorem ipsum... 
 </p>
 <p>
 Nulla... 
 </p>
 <p>
 Vivamus... 
 </p>
 <p>
 Phasellus... 
 </p>
 <p>
 Aenean... 
 </p>
 </div>

 </div>
 </asp:Content>
4

2 に答える 2

2

次のように、HyperLink コントロールの代わりに LinkBut​​ton を使用する必要があります。

マークアップ:

<asp:LinkButton id="OpenClose" 
                runat="server" 
                OnClick="OpenClose_Click" 
                AutoPostBack="true" 
                Text="Close"></asp:LinkButton>

コードビハインド:

protected void OpenClose_Click(object sender, EventArgs e)
{
    if (OpenClose.Text == "Close")
    {
        OpenClose.Text = "Open";
    }
    else
    {
        OpenClose.Text = "Close";
    }
}

クラスはLinkButtonクラスから派生するButtonため、ボタンに似たイベントがあり、これは必要な効果ですが、ハイパーリンクのようにレンダリングされます。

于 2013-06-24T21:07:43.343 に答える
0

<asp:hyperlink ....NET では大文字と小文字が区別されるため、有効なタイプのコントロールではありません。次のように変更してみてください。

<asp:HyperLink ...

また、ページ読み込みイベントのコードも削除します。

于 2013-06-24T21:07:18.863 に答える