Whenever you use a Button or LinkButton it is because you want to be able to do a postback when it is clicked. The same could be the case for CheckBox or DropDownList etc. but then you need to set the AutoPostback property to true. It all works very much the same way from a user’s point of view - click or select and the page performs a postback.

However, in some cases you want to be able to do a postback from a custom JavaScript function that emulates the click of an e.g. LinkButton. That is very simple to do so, but did you know that you also can send custom information via such a postback?

Example

The following LinkButton calls the server-side event handler OnSaveClick.

<asp:LinkButton runat="Server" ID="btnSave" Text="Save" OnClick="OnSaveClick" />

This is pretty much standard and no tricks have been used so far. Now we need the JavaScript method that forces the LinkButton to do a postback that calls the server-side method OnSaveClick.

<script type="text/javascript">

function SaveWithParameter(parameter)

{

  __doPostBack('btnSave ', parameter)

}

</script>

Notice that the function takes a parameter that it sends to the __doPostBack function. All we need to do now is to call the SaveWithParamter function from JavaScript.

>

SaveWithParameter("Hello world!");

Now the page performs a postback and we can now access the “Hello world!” string that we sent as a parameter from within the OnSaveClick event handler.

protected void OnSaveClick(object sender, EventArgs e)

{

  string parameter = Request["__EVENTARGUMENT"];

}

What we just did was to perform a postback from a custom JavaScript function and send a parameter to the server-side event handler. It sounds a lot harder than it is, right?

>

In ASP.NET 2.0 you have to set the EnableEventValidation="false" attribute in the page declaration or in web.config to make it work.

Most websites include a meta-tag that tells the browser what content-type the document is. It looks like this:

< meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />>

All ASP.NET web applications also adds the content-type to the HTTP headers of the response by default and to avoid surprises you should make sure the header and meta-tag inform the browser about the same content-type.

You can specify the content-type on individual pages or globally in the web.config like so:

<globalization responseEncoding="UTF-8" requestEncoding="UTF-8" />

To avoid giving the browser two different content-types you can use this little method and put it in the master page.

private void AddMetaContentType()

{

  HtmlMeta meta = new HtmlMeta();

  meta.HttpEquiv = "content-type";

  meta.Content = Response.ContentType + "; charset=" + Response.ContentEncoding.HeaderName;

  Page.Header.Controls.Add(meta);

}

It will add a meta-tag that specifies the same content-type as the HTTP header does. That way you just have to change the encoding in the web.config and it will automatically change the meta-tag accordingly.

>