在基于母版页的asp.net web应用程序中使用JQuery打开弹出窗口

在基于母版页的asp.net web应用程序中使用JQuery打开弹出窗口,jquery,asp.net,master-pages,Jquery,Asp.net,Master Pages,我有一个基于母版页的asp.net 4 web应用程序。在母版页中,我引用了所需的脚本和css文件。然而,当页面加载时,我得到一个JavaScript错误“MicrosoftJScript运行时错误:预期对象”。我知道这与母版页有关,因为如果我构建一个没有母版页的测试应用程序,代码就可以正常工作 母版页代码 <%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site1.master.cs" Inherits="We

我有一个基于母版页的asp.net 4 web应用程序。在母版页中,我引用了所需的脚本和css文件。然而,当页面加载时,我得到一个JavaScript错误“MicrosoftJScript运行时错误:预期对象”。我知道这与母版页有关,因为如果我构建一个没有母版页的测试应用程序,代码就可以正常工作

母版页代码

   <%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site1.master.cs" Inherits="WebApplication2.Site1" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
    <script src="Popup.js" type="text/javascript"></script>
    <link rel="stylesheet" href="StyleSheet1.css" type="text/css" media="screen" />
    <script type="text/javascript" src="jquery-1.7.1.min.js"></script>
    <title>Test</title>
    <asp:ContentPlaceHolder ID="head" runat="server">
    </asp:ContentPlaceHolder>
    </head>
    <body>
        <form id="form1" runat="server">
    <div>
        <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
        </asp:ContentPlaceHolder>
    </div>
    </form>
    </body>
    </html>
function Popup() {
        window.showModalDialog("webForm3.aspx", "");
    }

$(document).ready(function () {
    $("#button").click(function () {
        var isChecked = $('#checkbox1').is(':checked');
        if (isChecked) {
            Popup();
        }
    });
});
<%@ Page Title="" Language="C#" MasterPageFile="~/Site1.Master" AutoEventWireup="true"
CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication2.WebForm1" %>

<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
Check box
    <div id="button">
        <asp:CheckBox ID="checkbox1" runat="server" /></div>
</asp:Content>
主页代码

   <%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site1.master.cs" Inherits="WebApplication2.Site1" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
    <script src="Popup.js" type="text/javascript"></script>
    <link rel="stylesheet" href="StyleSheet1.css" type="text/css" media="screen" />
    <script type="text/javascript" src="jquery-1.7.1.min.js"></script>
    <title>Test</title>
    <asp:ContentPlaceHolder ID="head" runat="server">
    </asp:ContentPlaceHolder>
    </head>
    <body>
        <form id="form1" runat="server">
    <div>
        <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
        </asp:ContentPlaceHolder>
    </div>
    </form>
    </body>
    </html>
function Popup() {
        window.showModalDialog("webForm3.aspx", "");
    }

$(document).ready(function () {
    $("#button").click(function () {
        var isChecked = $('#checkbox1').is(':checked');
        if (isChecked) {
            Popup();
        }
    });
});
<%@ Page Title="" Language="C#" MasterPageFile="~/Site1.Master" AutoEventWireup="true"
CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication2.WebForm1" %>

<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
Check box
    <div id="button">
        <asp:CheckBox ID="checkbox1" runat="server" /></div>
</asp:Content>

复选框
弹出页面代码

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm3.aspx.cs"     Inherits="WebApplication2.WebForm3" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0     Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Popup</title>
</head>
<body>
<form id="form1" runat="server">
<div>
Hellow World
</div>
</form>
</body>
</html>

弹出窗口
地狱世界
/=========================site1.master=======================//
//======================popup.js=======================//
$(文档).ready(函数(){
$(“#按钮”)。单击(函数(e){
//var isChecked=$(this).find(“#ContentPlaceHolder1_checkbox1”).is(“:checked”);
//或
var isChecked=$(this).find(':checkbox')。is(':checked');
如果(已检查){
弹出();
}
});
});
函数Popup(){
showmodaldiallog(“webForm3.aspx”和“);
};
//===================webfrom2.aspx=======================//
复选框
//======================webfrom3.aspx=======================//
弹出窗口
地狱世界

如果您使用的是母版页,则所有输入的flied id都将转换为asp:ContentPlaceHolder id值+''复选框id值。现在,u r复选框id值为ContentPlaceholder 1\u checkbox1。因此,在使用母版页时,请小心asp.net中的所有id都将被更改。在浏览器中,右键单击并查看页面源代码,您可以看到复选框的原始id。在使用asp.net c#web应用程序使用masterpage实现jquery for webform时,我也遇到了同样的问题。