Introduction
Query string is one of the primary parameter passing techniques for Web Application.
Query string has some limitation in terms of query string length; this length depends on the browser.
- Opera supports ~4050 characters.
- IE 4.0+ supports exactly 2083 characters.
- Netscape 3 -> 4.78 supports up to 8192 characters.
- Netscape 6 supports ~2000
[http://classicasp.aspfaq.com/forms/what-is-the-limit-on-querystring/get/url-parameters.html]
To handle the query string length limitation, there are few solutions –
- using POST instead of GET,
- passing by Cookies
- Sending query string to the server by AJAX and adding to the session in the first step and fetching the query string from the session using some GUID concepts.
Here I am going to explain a best and stable solution for all the cases.
Background
We have three situations when we need to pass query string to the web page.
- Opening a new window (http://msdn.microsoft.com/en-us/library/ms536651(VS.85).aspx)
- Showing modal dialog (http://msdn.microsoft.com/en-us/library/ms536759(VS.85).aspx)
- Showing the URL in iFrame (http://msdn.microsoft.com/en-us/library/ms537627(v=VS.85).aspx)
Request Maximum Size can be configured on IIS Server configuration for Server side.
http://www.iis.net/ConfigReference/system.webServer/security/requestFiltering/requestLimits
[ Thanks : daveauld - http://www.codeproject.com/Members/daveauld ]
Using the Code
To solve this problem, I have come up with a simple solution using HttpHandler & Javascript.
What is HttpHandler? Read this - http://aspalliance.com/441
How to create an HttpHandler? Read this - http://support.microsoft.com/kb/308001
This solution contains 2 parts, first one is launching/showing the URL using the WindowManager.Js script object, and second part for passing the query string to the web page from HttpHandler.
The below work flow diagram shows internally how it’s working.
How to Implement
Attached sample code contain 2 files, first one is the script file WindowManager.Js, Second one is HttpHandler source code – PageTransfer.CS.
Steps to integrate:
- Web.Config Changes.
Add this entry undersystem.web\httpHandlers
Node. - Add these 2 files in your project folder.
- Include the script in your aspx page.
<add verb="*" path="PageTransfer.axd"
type="ApplicationFrameWork.PageTransfer, ApplicationFrameWork"/>
<!— type="ApplicationFrameWork.PageTransfer, AssemblyName" -->
<script src=" WindowManager.js" language="javascript"></script>
Let pass your unlimited query string to your pages.
<html>
<head>
<script src=" WindowManager.js" language="javascript"></script>
</head>
<script language=javascript>
function OpeniFrame()
{
WindowManager.LoadFrame("iFrameName", 'WebForm1.aspx',
'name=elayaraja&Your=UnlimitedQueryString', 'Your Title')
}
function OpenWindow()
{
WindowManager.OpenWindow ('WebForm1.aspx', 'Your Title','400px','500px',
'name=elayaraja&Your=UnlimitedQueryString')
}
function OpenModalWindow()
{
WindowManager.OpenModalWindow('WebForm1.aspx', 'Your Title','400px','500px',
'name=elayaraja&Your=UnlimitedQueryString')
}
</script>
<body>
<form id="form1" runat="server">
<div>
Open Window <input type=button value="Open" onclick="OpenWindow()" />
Load Frame Page<input type=button value="Frame" onclick="OpeniFrame()" />
Open Modal Dialog<input type=button value="Frame" onclick=" OpenModalWindow()" />
</div>
<iframe id="iFrameName" width="100%" height="300px" frameborder=1>
</iframe>
</form>
</body>
</html>