我有一个应用程序页面(在SharePoint应用程序中,如果这是相关的)注册了JQuery datepicker小部件:
<script type="text/javascript">
// Create JQuery calendar
$(document).ready(function () {
$('#<%=TextBoxDato.ClientID %>').datepicker({ altField: "#<%=TextBoxDato.ClientID %>",
altFormat: 'dd/mm/yy'
});
$.datepicker.setDefaults($.datepicker.regional['no']);
});
</script>
<asp:TextBox ID="TextBoxDato" runat="server" />
<asp:Button ID="ButtonSubmit" runat="server" text="Do it" />
在代码隐藏中,在页面加载时,我添加了一个小的客户端脚本来验证文件名,然后用今天的日期填充文本框:
// Add client-side script to check for existing file names
ButtonSubmit.Attributes.Add("onclick", "javascript:return checkFile()");
// Fill date box with today's date
DateTime now = DateTime.Now;
...然后,在单击ButtonSubmit的事件处理程序中,我尝试读出用户选择的值:
DateTime now = DateTime.Parse(TextBoxDato.Text, new CultureInfo("fr-FR"));
我的问题是,当点击ButtonSubmit时,用户选择的日期似乎在代码隐藏中被忽略 - “now”的值始终是今天的日期。运行调试器时,checkFilename()JavaScript方法可以访问选择的日期,但代码隐藏不是。有谁看到我做错了什么?
答案 0 :(得分:4)
日期TextBox是否只读?如果是,ASP.NET将忽略新值。
要解决此问题,您可以通过JavaScript而不是通过ASP.NET来读取文本框。
答案 1 :(得分:1)
你说
在代码隐藏中,在页面加载时,我添加了一个小的客户端脚本 验证文件名,然后用今天填充文本框 日期:
您要设置TextBox
值,并在页面加载时显示当前日期。在Page_Load
方法
VB
If Not Page.IsPostBack Then
'' assign the textbox value here
End If
C#
if (!Page.IsPosBack) {
// assign the textbox value here
}
否则,每次单击该按钮时,该值都将重置为页面加载值