<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Pass Javascript Variables to Server</title>
<script type="text/javascript">
function SetHiddenVariable()
{
var jsVar = "dotnetcurry.com";
__doPostBack('callPostBack', jsVar);
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="txtJSValue" runat="server"></asp:TextBox>
<asp:Button ID="btnJSValue" Text="Click to retreive Javascript Variable"
runat="server"/>
</div>
</form>
</body>
</html>
위에
__doPostBack('callPostBack', jsVar); 이 부분을 자세히 보길 바란다.
해당 값을 어떻게 처리하는지 아래와 같다.GetPostBackEventReference 은 서버에 다시 게시 작업을 발생시키는 클라이언트 이벤트에 사용할 수 있는 문자열을 반환합니다. 참조 문자열은 다시 게시 작업과 추가 이벤트 정보의 문자열 인수를 처리하는 지정된 컨트롤에 의해 정의됩니다.
__doPostBack 에 할당된 두개의 파라미터가 존재하는데... 첫번째가 eventTarget 변수를 의미하며, eventArgument 은 두번째 변수를 의미합니다.
protected void Page_Load(object sender, EventArgs e)
{
this.ClientScript.GetPostBackEventReference(this, "arg");
if (IsPostBack)
{
string eventTarget = this.Request["__EVENTTARGET"];
string eventArgument = this.Request["__EVENTARGUMENT"];
if (eventTarget != String.Empty && eventTarget == "callPostBack")
{
if (eventArgument != String.Empty)
txtJSValue.Text = eventArgument;
}
}
else
{
btnJSValue.Attributes.Add("onClick", "SetHiddenVariable();");
}
}
또는, 동적으로 서버컨트롤을 코드 비하인드 단에서 구현을 할때, 이벤트 onclick 에 대한 부분을 GetPostBackEventReference 통해서 지정을 하여, postback 이 발생할 경우 이에 대한 이벤트 처리할 메소드를 지정하여 구현할 수 있다. 자세한 예제는 아래의 msdn 을 참고하시기 바란다.