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