How to call Postback from Javascript

來源:互聯網
上載者:User
 
Introduction

Postback
is a concept introduced in ASP.NET and is a very handy method. Postback
is built into the ASP.NET and most of the web controls support it
without writing any code.

Calling postback event from Javascript

There
may be some scenario where you may want to explicitly postback to the
server using some clientside javascript. It is pretty simple to do this.

ASP.NET already creates a client side javascript method as shown below to support Postbacks for the web controls:


function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}

So, all you have to do is, just call this method with appropriate arguments. You may call this as shown below:


<script language='Javascript'>
__doPostBack('__Page', 'MyCustomArgument');
</script>

However,
it is not recommended to use this method name directly in the client
side. The best approach is, generate this piece of code from the code
behind file using ASP.NET. This way, you are safe even if Microsoft
later change the name of the method '__doPostBack' to something else in
a future release.

In your code behind file, declare a protected variable as shown below:



Protected PostBackStr As String

Now, in the page load event, write the following code:



PostBackStr = Page.ClientScript.GetPostBackEventReference(Me, "MyCustomArgument")

The
method GetPostBackEventReference() will generate the same piece of
client side code that you need to use to call the Postback method.
Instead of harcoding the method name __doPostBack, we are asking
ASP.NET to tell us what is the method name.

Now insert the following code in your Aspx page:


<script language='Javascript'>
<%= PostBackStr %>
</script>

At runtime, it will be evaluated as:


<script language='Javascript'>
__doPostBack('__Page', 'MyCustomArgument');
</script>

Remember
to insert the above script into some Javascript method/event where you
want to call the postback, instead of simply inserting into the page as
shown above.

How to identify and handle the postback in code behind ?

You
found how to call the postback from javascript. Now you need a way to
identify your postback in the code behind file. The second argument the
doPostback method becomes helpful here.

Go to the code behind file and write the following code in the Page Load event:


If Page.IsPostBack Then
Dim eventArg As String = Request("__EVENTARGUMENT")
If eventArg = "MyCustomArgument" Then
Response.Write("You got it !")
End If
End If

Did
you notice how we identify if the page is loaded as part of our
postback? We used the second argument in the __doPostBack method to
pass a value and used that in PageLoad to identify if it is called as a
result of our PostBack.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.