c# - 单击链接按钮时显示面板

标签 c# javascript asp.net css ajax

我想在点击链接按钮时显示/隐藏面板。当我在简单页面上使用它时它工作正常但是当我在用作母版页的页面上尝试它时它不起作用。

我的代码:

<%@ Page Language="C#" MasterPageFile="~/Master_Institute.master" AutoEventWireup="true" CodeFile="frm_Student_Renewal_Reg.aspx.cs" Inherits="frm_Student_Renewal_Reg" Title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    <script type='text/javascript' src='http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js'></script>
    <style type="text/css">
        .panel{
            display:none;
        }
        .style1{
            width: 620%;
        }
    </style>
    <script type="text/javascript">
        $(function() {
            $("#Link1").click(function(evt) {
                evt.preventDefault();
                $('#panelText').slideToggle('slow');
            });
        });
    </script>
    <table>
        <tr>
            <td>
                <asp:HyperLink ID="Link1" runat="server" NavigateUrl="#">
                    Using slideToggle
                </asp:HyperLink>
                <br />
                <asp:Panel ID="panelText" runat="server" CssClass="panel">
                    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc turpis nunc, placerat ac, bibendum non, pellentesque nec, odio.
                </asp:Panel> 
            </td>
        </tr>
        <tr>
            <td>
            </td>
        </tr>
    </table>
</asp:Content>

我做错了什么?

最佳答案

所有控件的id都是根据ID和所在的其他页面自动创建的。当您只有一个页面时,Link1 很可能再次呈现为 Link1 但是当您将其添加到母版页中时,asp.net 会添加以避免冲突前面还有一些名字,例如占位符的名字。

现在实际上,您需要在客户端有 javascript 代码,即最终呈现的 ID,这可以使用 Link1.ClientID 获取。 所以在每一行你必须得到你使用它的ID

$("#<%=Link1.ClientID%>").click(function(evt) {

然后您对在 javascript 上使用的所有 asp.net 控件执行此操作。

你也可以设置 ClientIDMode="Static" 但是你不能在同一个页面上使用同一个控件两次,你还必须注意其他控件不要有相同的 ID .

ClientIDMode =Static 属性告诉 asp.net 保留您设置的 id,而不是动态创建一个新的 id。此属性在 asp.net 版本 4 上引入。

关于c# - 单击链接按钮时显示面板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21327569/

相关文章:

c# - 在 SqlConnection.Open()、asp.net 上未将对象引用设置为对象的实例

asp.net - 如何将数组传递给 rdlc 报告?

c# - 强制转换规范的字符值无效

c# - VSTS - 使用 API 获取所有项目的列表,而不仅仅是前 100 个

c# - C# 中的高性能文件复制?

C# 在一个线程中锁定,调用以在另一个线程中释放

javascript - 对大量简单形状进行动画处理

javascript - 在 Google Charts 中设置条形图的基线和范围

javascript - 指定日期之间的毫秒数并在js中转换为日期格式

JQuery 在代码隐藏执行之前禁用我的按钮