Third approach(Extension method)
public static class ResponseHelper {
public static void Redirect(this HttpResponse response,
string url, string target, string windowFeatures) {if ((String.IsNullOrEmpty(target) ||
target.Equals("_self",
StringComparison.OrdinalIgnoreCase)) &&
String.IsNullOrEmpty(windowFeatures)) {
response.Redirect(url);}
else {Page page = (Page)HttpContext.Current.Handler;
if (page == null) {
throw new InvalidOperationException(
"Cannot redirect to new window outside
Page context.");}
url = page.ResolveClientUrl(url);
string script;if (!String.IsNullOrEmpty(windowFeatures)) {
script = @"window.open(""{0}"", ""{1}"",
""{2}"");";
}
else {script = @"window.open(""{0}"", ""{1}"");";
}
script = String.Format(script, url, target,
windowFeatures);
ScriptManager.RegisterStartupScript(page, typeof(Page), "Redirect",script,
true);}
}
}
Note the 'this' keyword in the first parameter.
Now whenever we include the namespace this class
is defined within, we get a nice override on the
actual Response object.
No comments:
Post a Comment