1

我有一个带有 aspx 页面的 ASP.net 应用程序。

Page_Loadaspx页面的情况下,我正在处理一些基于来自javascript的隐藏变量的值的代码(将javascript的结果分配给隐藏变量)。

我在Page_Load子页面中调用 javascript,在立即声明中,我正在使用隐藏变量值进行处理。当我访问隐藏变量值时,我只获得默认值。

请建议我处理这种情况。我需要执行 javascript 并将结果放入隐藏变量中。两者都只需要在Page_Load事件中发生。

隐藏变量声明:

<asp:HiddenField runat='server' ID='hdnDate' Value='0' />

Javascript:

function getCDate() {
    var nowDate    = new Date();  
    var curr_month = nowDate.getUTCMonth();
    curr_month ++;
    var dt = curr_month + "/" + nowDate.getUTCDate() + "/" +nowDate.getFullYear()+ " " + nowDate.getUTCHours()+":" +nowDate.getUTCMinutes()+":" +nowDate.getUTCSeconds();
    document.getElementById("ctl00_ContentPlaceHolder1_hdnDate").value = dt;          
    return true;
}

代码隐藏文件中的 Page_Load 方法:

protected void Page_Load(object sender, EventArgs e)
{
    Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", "getCDate();", true);
    DateTime dt=Convert.ToDateTime(hdnDate.Value);
    dt.AddDays(10);    //getting error here because dt contains01/01/0001       
}
4

3 回答 3

0

Javascript 在客户端运行,因此不能在服务器的 Page_Load 事件中运行。

从您的代码的外观来看,我很确定您不需要 javascript,您可以将值放入 SessionVariable 为:

Session.Add("DateRendered", DateTime.Now.AddDays(10).ToString("MM/dd/YYYY"));

然后稍后检索它。ASP.net 负责将其存储在请求/响应中。

于 2009-10-21T22:15:40.977 回答
0

RegisterStartupScript 将注册您的脚本块以供下一个页面加载。如果您只想将一些值传输到 .cs 页面,请在 .cs 上编写一个静态方法并使用 PageMethods.MethodName() 从 javascript 调用它;

于 2009-12-24T09:35:15.437 回答
0

你不能在Page_Load. 它是客户端的东西,所以应该只来自浏览器。IsPostBack您可以使用对象的属性检查页面是否回发,Page如下所示:

if(IsPostBack)
{
   //this is coming from browser so you javascript  might have been
   //called and proper value set in hidden field.
}
于 2009-09-24T05:58:27.170 回答