C# ASP.NET javascript参数为空

C# ASP.NET javascript参数为空,c#,javascript,asp.net,C#,Javascript,Asp.net,我有一些javascript来更改日历扩展程序控件的功能,我想将一个参数传递给(一个ID),但该参数永远不会被设置。当我在js文件中硬编码参数时,函数可以工作,但是我很难找到为什么我可以将参数传递给函数 下面是我正在使用的aspx代码示例: <ajax:CalendarExtender ID="clxStartMonth" runat="server" TargetControlID="txtStartMonth" Format="MM/yyyy" DefaultView="Months"

我有一些javascript来更改日历扩展程序控件的功能,我想将一个参数传递给(一个ID),但该参数永远不会被设置。当我在js文件中硬编码参数时,函数可以工作,但是我很难找到为什么我可以将参数传递给函数

下面是我正在使用的aspx代码示例:

<ajax:CalendarExtender ID="clxStartMonth" runat="server" TargetControlID="txtStartMonth" Format="MM/yyyy" DefaultView="Months" ClientIDMode="Static" OnClientHidden="onCalendarHidden('clxStartMonth');" OnClientShown="onCalendarShown('clxStartMonth');"  ></ajax:CalendarExtender>

如您所见,我正在尝试将控件ID传递给由OnClientHidden和OnClientShown事件触发的函数

以下是javascript函数:

function onCalendarHidden(clx) {
var cal = $find(clx);

if (cal._monthsBody) {
    for (var i = 0; i < cal._monthsBody.rows.length; i++) {
        var row = cal._monthsBody.rows[i];
        for (var j = 0; j < row.cells.length; j++) {
            Sys.UI.DomEvent.removeHandler(row.cells[j].firstChild, "click", call);
        }
    }
}
}

function onCalendarShown(clx) {
var cal = $find(clx);
cal._switchMode("months", true);

if (cal._monthsBody) {
    for (var i = 0; i < cal._monthsBody.rows.length; i++) {
        var row = cal._monthsBody.rows[i];
        for (var j = 0; j < row.cells.length; j++) {
            Sys.UI.DomEvent.addHandler(row.cells[j].firstChild, "click", call);
        }
    }
}
}

function call(eventElement) {
var target = eventElement.target;
switch (target.mode) {
    case "month":
        var cal = $find("clxStartMonth");
        cal._visibleDate = target.date;
        cal.set_selectedDate(target.date);
        cal._blur.post(true);
        cal.raiseDateSelectionChanged();
        break;
}
}
函数onCalendarHidden(clx){
var-cal=$find(clx);
如果(校准月体){
对于(变量i=0;i

关于如何解决此问题,您有什么想法吗?

在运行时查看HTML源代码(右键单击页面并选择“查看源代码”)。验证控件clxStartMonth实际上是控件的ID,并且没有被更改为其他内容(例如ctl0$clxStartMonth…)。如果控件ID已更改,则将clxStartMonth控件上的ClientIDMode属性设置为“Static”。

尝试将参数记录在函数中,以查看它是否已定义。你能告诉我们这些参数是在哪里定义的吗?函数确实收到了参数,但是我得到了一个空引用错误。如果我使用参数调用函数,即使我硬编码控件ID而不是使用参数中的ID,它似乎也找不到控件。JavaScript是否与ASPX驻留在同一个文件中?或者是否有用于JavaScript的separte.JS文件?它位于单独的文件中。