A breaking change in ASP.NET 4.0 causes a javascript error to be thrown on a page if a query string has a “potentially unsafe” character, such as an apostrophe in a last name.
You’ll see the error (possibly only while debugging): “A potentially dangerous Request.QueryString value was detected from the client” when passing the special character in a query string in a button click or a jqgrid’s FillGrid postData BuildGrigArgs function.
The fix is easy: set the behavior back to ASP.NET 2.0 in the web.config with this line in the system.web section right below your </compilation> tag (the requestPathInvalidCharacters parameter here blocks everything except a single quote):
<httpRuntime requestPathInvalidCharacters="<,>,*,%,:,&,\" requestValidationMode="2.0" />
And in your pages be sure you don’t encode the parameter in the MVC code in your javascript (i.e. you’ll need to use <%= instead of <%: for those parameters that need special characters).
For example, this:
function BuildPreviousArgs() { var args = new Object();
args.FilterLastName = "<%: Model.FilterLastName %>";
return $.param(args);
}
Has to be changed to this:
function BuildPreviousArgs() { var args = new Object();
args.FilterLastName = "<%= Model.FilterLastName %>";
return $.param(args);
}