GET shows lots of ugly names and values in url. Most browsers have some restrictions on the size of url string. The above 2 points make POST a better choice over GET.
We will quickly see, how can we convert our existing GETs to POSTs.
When a new page is to be called we will create a form dynamically, create hidden fields for all the values to be passed and submit it. The following script can help you in achieving this.
Assume that valuesToPost is a javascript array of objects which has fields Name and Value.
function PostIt(valuesToPost, targetUrl)
{
var form = document.createElement("form");
form.setAttribute("method", "post");
form.setAttribute("action", targetUrl);
for (var i=0; i<valuesToPost.length; i++)
{
var hiddenField = document.createElement("input");
hiddenField.setAttribute("type", "hidden");
hiddenField.setAttribute("name", valuesToPost[i].Name);
hiddenField.setAttribute("value", valuesToPost[i].Value);
form.appendChild(hiddenField);
}
document.body.appendChild(form);
form.submit();
}We can read these passed values from the page as follows. These dynamically posted values will be available only when IsPostback is false.
So on page_load, the following code can read these posted values.
if(!IsPostback)
{
string id = GetPostedValue("Id");
Dictionary<string, string> postedValues = GetPostedValues();
}
public string GetPostedValue(string key)
{
return Request.Form[key];
}
public Dictionary<string, string> GetPostedValues()
{
Dictionary<string, string> postedVals = new Dictionary<string, string>();
foreach (string key in Request.Form.AllKeys)
postedVals.Add(key, Request.Form[key]);
return postedVals;
}Now bye bye to ugly URLs.
Happy POSTing!!!
No comments:
Post a Comment