Fix bugs in sizing TableLayoutPanel (Xamarin bug 18638)
[mono.git] / mcs / class / System.Web.Mvc / System.Web.Mvc / RedirectToRouteResult.cs
1 /* ****************************************************************************\r
2  *\r
3  * Copyright (c) Microsoft Corporation. All rights reserved.\r
4  *\r
5  * This software is subject to the Microsoft Public License (Ms-PL). \r
6  * A copy of the license can be found in the license.htm file included \r
7  * in this distribution.\r
8  *\r
9  * You must not remove this notice, or any other, from this software.\r
10  *\r
11  * ***************************************************************************/\r
12 \r
13 namespace System.Web.Mvc {\r
14     using System;\r
15     using System.Web.Mvc.Resources;\r
16     using System.Web.Routing;\r
17 \r
18     // represents a result that performs a redirection given some values dictionary\r
19     public class RedirectToRouteResult : ActionResult {\r
20 \r
21         private RouteCollection _routes;\r
22 \r
23         public RedirectToRouteResult(RouteValueDictionary routeValues) :\r
24             this(null, routeValues) {\r
25         }\r
26 \r
27         public RedirectToRouteResult(string routeName, RouteValueDictionary routeValues) {\r
28             RouteName = routeName ?? String.Empty;\r
29             RouteValues = routeValues ?? new RouteValueDictionary();\r
30         }\r
31 \r
32         public string RouteName {\r
33             get;\r
34             private set;\r
35         }\r
36 \r
37         public RouteValueDictionary RouteValues {\r
38             get;\r
39             private set;\r
40         }\r
41 \r
42         internal RouteCollection Routes {\r
43             get {\r
44                 if (_routes == null) {\r
45                     _routes = RouteTable.Routes;\r
46                 }\r
47                 return _routes;\r
48             }\r
49             set {\r
50                 _routes = value;\r
51             }\r
52         }\r
53 \r
54         public override void ExecuteResult(ControllerContext context) {\r
55             if (context == null) {\r
56                 throw new ArgumentNullException("context");\r
57             }\r
58 \r
59             string destinationUrl = UrlHelper.GenerateUrl(RouteName, null /* actionName */, null /* controllerName */, RouteValues, Routes, context.RequestContext, false /* includeImplicitMvcValues */);\r
60             if (String.IsNullOrEmpty(destinationUrl)) {\r
61                 throw new InvalidOperationException(MvcResources.ActionRedirectResult_NoRouteMatched);\r
62             }\r
63 \r
64             context.HttpContext.Response.Redirect(destinationUrl, false /* endResponse */);\r
65         }\r
66     }\r
67 }\r