1

aspxページを備えたASP.netアプリケーションがあります。

aspxページの場合、Page_Loadjavascriptの非表示変数の値に基づくコードを処理しています(javascriptの結果を非表示変数に割り当てます)。

子ページのjavascriptを呼び出しておりPage_Load、immediateステートメントでは、処理に非表示の変数値を使用しています。非表示の変数値にアクセスすると、デフォルト値のみが取得されます。

シナリオの処理について教えてください。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       
}
4

3 に答える 3

0

で javascript を呼び出すことはできません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 に答える
0

RegisterStartupScript は、次のページ読み込みのためにスクリプトのブロックを登録します。何らかの値を .cs ページに転送するだけの場合は、.cs に静的メソッドを記述し、PageMethods.MethodName(); を使用して JavaScript から呼び出します。

于 2009-12-24T09:35:15.437 に答える
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 に答える