ASP.NET Pikaday 无法使用母版页

ASP.NET Pikaday don't work with master page

在一个简单的 Web 表单中,Pikaday 工作得很好,但是当我在内容页面中使用它时它不起作用,为了更好地理解我正在提供代码......提前感谢

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site1.master.cs" Inherits="Test2.Site1" %>

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <link href="css/pikaday.css" rel="stylesheet" />
    <link href="css/theme.css" rel="stylesheet" />
    <script src="js/pikaday.js"></script>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
            </asp:ContentPlaceHolder>
        </div>
    </form>
</body>
</html>

和内容页面代码

<%@ Page Title="" Language="C#" MasterPageFile="~/Site1.Master" AutoEventWireup="true" CodeBehind="ContentPage.aspx.cs" Inherits="Test2.WebForm2" %>

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
     <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
            <h4>This is from content page</h4>
            <asp:TextBox ID="tbxFromDate" runat="server"></asp:TextBox>
            <asp:TextBox ID="tbxToDate" runat="server"></asp:TextBox>

            <script type="text/javascript">
                var picker1 = new Pikaday({
                    field: document.getElementById('tbxFromDate'),
                    theme: 'dark-theme'
                });
                var picker2 = new Pikaday({
                    field: document.getElementById('tbxToDate'),
                    theme: 'dark-theme'
                });
            </script>
        </ContentTemplate>
    </asp:UpdatePanel>
</asp:Content>

我不明白我错过了什么

问题是 tbxFromDatetbxToDate 在 HTML 中不存在。由于控件位于内容控件中,因此更改了它们的 ID 以确保没有重复项。

他们的 ID 大概是这样的:ContentPlaceHolder1_tbxFromDate.

因此您需要通过 ClientID 来引用它们。所以使用

<script type="text/javascript">
    var picker1 = new Pikaday({
        field: document.getElementById('<%= tbxFromDate.ClientID %>'),
        theme: 'dark-theme'
    });
    var picker2 = new Pikaday({
        field: document.getElementById('<%= tbxToDate.ClientID %>'),
        theme: 'dark-theme'
    });
</script>