如何在子页面的onload事件中调用javascript

时间:2009-09-24 04:48:31

标签: asp.net javascript pageload

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

在aspx页面的Page_Load事件中,我正在处理一些代码,这些代码基于javascript中的隐藏变量的值(将javascript的结果分配给隐藏变量)。

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

请建议我处理这个场景。我需要执行javascript并将结果输入隐藏变量。两者都需要仅在Page_Load事件中发生。

隐藏变量声明:

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

Javscript:

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       
}

3 个答案:

答案 0 :(得分:0)

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

if(IsPostBack)
{
   //this is coming from browser so you javascript  might have been
   //called and proper value set in hidden field.
}

答案 1 :(得分:0)

Javascript在客户端运行,因此无法在服务器上的Page_Load事件中运行。

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

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

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

答案 2 :(得分:0)

RegisterStartupScript将为下一页加载注册您的脚本块。 如果你只想将一些值转移到.cs页面,请在.cs上写一个静态方法,然后使用PageMethods.MethodName();

从javascript调用它