将datetimepicker的值传递给后面的代码(c#)

时间:2012-05-24 11:05:41

标签: c# jquery jquery-ui code-behind datetimepicker

我想将datetimepicker的值传递给我的Codebehind(C#)并将其保存到C#中的变量。

我尝试使用隐藏字段,但它不起作用。

这是js代码:

var dates = $("#ArrivalStartDatepicker").datetimepicker({
                            defaultDate: "+lw",
                            dateFormat: 'dd-mm-yy',
                            changeMonth: true,
                            numberOfMonths: 2,
                            ampm: true,
                            stepMinute: 10,
                            minuteGrid: 10,
                            onSelect: function (selectedDate) {
                                    document.getElementById("ArrivalStart").value = dates.datetimepicker('getDate');
                                }
                            });

隐藏字段:

<div>
          <input type="hidden" id="ArrivalStart" runat="server"/> 
</div>

当我选择日期或时间时,firebug会抛出以下错误:

document.getElementById(“ArrivalStart”)为空

这告诉我,JS中无法访问ArrivalStart-Field。

我该如何管理?

格尔茨

托比

2 个答案:

答案 0 :(得分:4)

而不是

 document.getElementById("ArrivalStart")

使用

  document.getElementById("<%= ArrivalStart.ClientId %>")

这样就可以注入ASP.Net创建的ID。

修改
这个javascript片段需要在aspx文件中(不是单独的js文件),因为ASP.Net需要处理<%= .. %>块并需要访问ArrivalStart成员。

答案 1 :(得分:1)

当你创建一个控制runat = server时,c#负责渲染元素。因此,大多数情况下,它会重新编写控件的ID,因为它需要考虑控件的形式,以及它是否嵌套在数据转发器或其他重复控件中。

如果您运行该页面并单击“查看源”,该元素的ID是否仍然等于“ArrivalStart”或者ID已被重写?

如果不是,您可以使用C#将控件的ClientID(Control.ClientID)写入您的jQuery脚本

我可能会在错误的树上狂奔:)