0

ページの読み込み時にjavascript関数を実行してから、コードビハインドで関数を呼び出すポストバックを実行しようとしています。タイムゾーンデータを取得し、それらを引数として__dopostbackに渡そうとしています。これが私が持っているものです(省略形):

.aspxファイル内

<body onload="GetLocalTime()">
....
function GetLocalTime(){debugger
    var d = new Date();
    var tzOffset = d.getTimezoneOffset();
    var hfOffset = document.getElementById('<%=hfOffset.ClientID%>');
    var hfTZName = document.getElementById('<%=hfTZName.ClientID%>');
    var tzName = getTimezoneName();
    hfOffset.value = tzOffset;
    hfTZName.value = tzName;
    __doPostBack('TZSessionVars', tzOffset, tzName);
}

コードビハインドのPage_Load()で、IsPostbackがtrueの場合:

string sTarget = Request["__EVENTTARGET"];
if (sTarget.Equals("TZSessionVars"))
{
    string sArg = Request["__EVENTARGUMENT"];
    SetTZSessionVars(sArg);  // this is where I parse the argument and set session vars
}

javascriptをトレースすると、__ doPostbackに達すると、次のように表示されます。MicrosoftJScriptランタイムエラー:オブジェクトが必要です

パラメーターtzOffsetおよびtzNameはOKであり、有効な値を持っています。

4

1 に答える 1

3

この記事で説明されているように、__E​​VENTARGUMENTを使用できます。

Asp.NetのJavascriptから__doPostBack()関数を使用してポストバックを実行または発生させる

連結された値を単一の__EVENTARGUMENTとして渡し、サーバーで分割して実際の引数を取得してみてください

于 2013-02-21T18:10:29.767 に答える