【问题标题】:asp.net 4 visual studio 2010 jquery master page not workingasp.net 4 Visual Studio 2010 jquery 母版页不工作
【发布时间】:2012-05-31 22:24:20
【问题描述】:

更新:我确实使用谷歌浏览器尝试了这个网站,结果与 IE 相同

更新:我确实将 Default.aspx 脚本更改为

$("#btnSearch").click(function () {

和按钮

<asp:Button ID="btnSearch" runat="server" Text="Search"  ClientIDMode="Static" />

我已经使用 Ajax 控制工具包好几年了。想玩jQuery。我无法获得一个简单的 jQuery 教程来工作。我正在使用教程学习 jQuery:

jquery_webforms_Using_Animations

在本教程中 - 我跳到只是试图弹出一个对话框 - 在本例中是一个搜索窗口。

我使用 Visual Studio 2010 创建了一个新网站。 Visual Studio 会自动创建母版页、默认页、scripts 文件夹中的 jquery 脚本等。

我将 ScriptManager 添加到母版页。我从母版页中删除了登录内容——因为我不需要 jquery 教程的额外复杂性。

我删除了 Visual Studio 在 Default.aspx 的“BodyContent”中创建的内容。

我将加载 jquery 的脚本命令添加到 Default.aspx 的标头内容中。我添加了一个简短的脚本,将事件处理程序附加到按钮以弹出对话框。我发出了几个警报,看看是什么在触发。

在内容正文中,我添加了一个将弹出对话框的按钮,并添加了将弹出的对话框。

我编译并运行应用程序,我的 Default.aspx 出现了,我可以单击“搜索”按钮,它确实回发了 - 但没有警报,也没有弹出对话框。

我无法想象一个更简单的示例 - 但它不起作用。有任何想法吗?谢谢。

母版页:

<%@ Master Language="VB" AutoEventWireup="false" CodeFile="Site.Master.vb" Inherits="Site" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head runat="server">
<title></title>
<link href="~/Styles/Site.css" rel="stylesheet" type="text/css" />
<asp:ContentPlaceHolder ID="HeadContent" runat="server">
</asp:ContentPlaceHolder>
</head>
<body>
<form runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<div class="page">
    <div class="header">
        <div class="title">
            <h1>
                My ASP.NET Application
            </h1>
        </div>
        <div class="clear hideSkiplink">
            <asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="false" IncludeStyleBlock="false" Orientation="Horizontal">
                <Items>
                    <asp:MenuItem NavigateUrl="~/Default.aspx" Text="Home"/>
                    <asp:MenuItem NavigateUrl="~/About.aspx" Text="About"/>
                </Items>
            </asp:Menu>
        </div>
    </div>
    <div class="main">
        <asp:ContentPlaceHolder ID="MainContent" runat="server"/>
    </div>
    <div class="clear">
    </div>
</div>
<div class="footer">

</div>
</form>
</body>
</html>

这里是 Default.aspx

<%@ Page Title="Home Page" Language="VB" MasterPageFile="~/Site.Master" AutoEventWireup="false"
CodeFile="Default.aspx.vb" Inherits="_Default" %>

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
<script src="~/Scripts/jquery-1.4.1.js" type="text/javascript" />
<script type="text/javascript" language="javascript">
    $(document).ready(function () {
        alert("Setting Click event handler");
        $("<%=btnSearch.clientID%>").click(function () {
            alert("Showing dialog");
            $("#searchdialog").slideDown("slow");
        });
    });
</script>
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<asp:Button ID="btnSearch" runat="server" Text="Search" />
<div id="searchdialog" style="position: absolute; top: 65px; right: 5px; width: 200px;
    display: none;">
    <div>
        Search For Symbol</div>
    <div>
        Enter a symbol:
        <input type="text" name="txtSymbolSearch" id="txtSymbolSearch" value="" />
        <input type="button" id="btnSymbolSearch" value="Search" />
    </div>
</div>
</asp:Content

【问题讨论】:

  • 为什么有两个搜索按钮?其中一个是 .net 控件,另一个是纯 html
  • 是你的警报(“设置点击事件处理程序”);开火?
  • 两个警报都没有出现。我也认为这是问题的根源......但我不知道为什么它不会在准备好的文档上连接事件处理程序?
  • 我在谷歌上搜索其他关于文档准备好未触发的帖子,它说 jquery 没有加载。所以我将我的行改为 jquery 作为 然后警报开始触发

标签: jquery asp.net master-pages


【解决方案1】:

在 jQuery 中缺少带有 id 的“#”:

$("#<%=btnSearch.clientID%>")

试试这个:

 <script type="text/javascript" language="javascript">
        $(document).ready(function () {
            alert("Setting Click event handler");
            $("#<%=btnSearch.clientID%>").click(function () {
                alert("Showing dialog");
                $("#searchdialog").slideDown("slow");
            });
        });
    </script>

【讨论】:

  • 你的例子有什么不同?
  • @jrummell $("#")
  • 您应该在回答中注意这一点。
  • 如果这不起作用,请尝试切换到静态 id 模式。而不是绑定名称类型是有效的。这在 ASP.NET 4 中是可能的 ->
  • 感谢您的建议,但我将那一行脚本更改为 :: $("#").click(function () { :: 并且有功能没有变化。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-29
  • 1970-01-01
相关资源
最近更新 更多