Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/aspnetwebstack.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/System.Web.Mvc/RedirectResult.cs')
-rw-r--r--src/System.Web.Mvc/RedirectResult.cs56
1 files changed, 56 insertions, 0 deletions
diff --git a/src/System.Web.Mvc/RedirectResult.cs b/src/System.Web.Mvc/RedirectResult.cs
new file mode 100644
index 00000000..0dfad042
--- /dev/null
+++ b/src/System.Web.Mvc/RedirectResult.cs
@@ -0,0 +1,56 @@
+using System.Diagnostics.CodeAnalysis;
+using System.Web.Mvc.Properties;
+
+namespace System.Web.Mvc
+{
+ // represents a result that performs a redirection given some URI
+ public class RedirectResult : ActionResult
+ {
+ [SuppressMessage("Microsoft.Design", "CA1054:UriParametersShouldNotBeStrings", MessageId = "0#", Justification = "Response.Redirect() takes its URI as a string parameter.")]
+ public RedirectResult(string url)
+ : this(url, permanent: false)
+ {
+ }
+
+ [SuppressMessage("Microsoft.Design", "CA1054:UriParametersShouldNotBeStrings", MessageId = "0#", Justification = "Response.Redirect() takes its URI as a string parameter.")]
+ public RedirectResult(string url, bool permanent)
+ {
+ if (String.IsNullOrEmpty(url))
+ {
+ throw new ArgumentException(MvcResources.Common_NullOrEmpty, "url");
+ }
+
+ Permanent = permanent;
+ Url = url;
+ }
+
+ public bool Permanent { get; private set; }
+
+ [SuppressMessage("Microsoft.Design", "CA1056:UriPropertiesShouldNotBeStrings", Justification = "Response.Redirect() takes its URI as a string parameter.")]
+ public string Url { get; private set; }
+
+ public override void ExecuteResult(ControllerContext context)
+ {
+ if (context == null)
+ {
+ throw new ArgumentNullException("context");
+ }
+ if (context.IsChildAction)
+ {
+ throw new InvalidOperationException(MvcResources.RedirectAction_CannotRedirectInChildAction);
+ }
+
+ string destinationUrl = UrlHelper.GenerateContentUrl(Url, context.HttpContext);
+ context.Controller.TempData.Keep();
+
+ if (Permanent)
+ {
+ context.HttpContext.Response.RedirectPermanent(destinationUrl, endResponse: false);
+ }
+ else
+ {
+ context.HttpContext.Response.Redirect(destinationUrl, endResponse: false);
+ }
+ }
+ }
+}