From 2fea7ffb5e4d39c429dba207316133d81eaff2ac Mon Sep 17 00:00:00 2001 From: wook Date: Tue, 11 Apr 2017 00:47:48 +0900 Subject: [PATCH] Ch. 16 Routing Adv (until 16-5) --- .../UrlsAndRoutes.Tests.csproj | 1 + UrlsAndRoutes.Tests/app.config | 11 ++++++ .../AdditionalControllers/HomeController.cs | 18 ---------- UrlsAndRoutes/App_Start/RouteConfig.cs | 17 ++++++--- .../Controllers/CustomerController.cs | 14 ++++++++ UrlsAndRoutes/UrlsAndRoutes.csproj | 14 +++++++- UrlsAndRoutes/Views/Shared/ActionName.cshtml | 6 ++++ UrlsAndRoutes/Web.config | 36 +++++++++---------- UrlsAndRoutes/packages.config | 4 +++ 9 files changed, 79 insertions(+), 42 deletions(-) create mode 100644 UrlsAndRoutes.Tests/app.config delete mode 100644 UrlsAndRoutes/AdditionalControllers/HomeController.cs diff --git a/UrlsAndRoutes.Tests/UrlsAndRoutes.Tests.csproj b/UrlsAndRoutes.Tests/UrlsAndRoutes.Tests.csproj index 7ca7445..3576db0 100644 --- a/UrlsAndRoutes.Tests/UrlsAndRoutes.Tests.csproj +++ b/UrlsAndRoutes.Tests/UrlsAndRoutes.Tests.csproj @@ -61,6 +61,7 @@ + diff --git a/UrlsAndRoutes.Tests/app.config b/UrlsAndRoutes.Tests/app.config new file mode 100644 index 0000000..9d3e5a6 --- /dev/null +++ b/UrlsAndRoutes.Tests/app.config @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/UrlsAndRoutes/AdditionalControllers/HomeController.cs b/UrlsAndRoutes/AdditionalControllers/HomeController.cs deleted file mode 100644 index 70f22a8..0000000 --- a/UrlsAndRoutes/AdditionalControllers/HomeController.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.Mvc; - -namespace UrlsAndRoutes.AdditionalControllers -{ - public class HomeController : Controller - { - public ActionResult Index() - { - ViewBag.Controller = "Addtional COntrollers - Home"; - ViewBag.Action = "Index"; - return View("ActionName"); - } - } -} \ No newline at end of file diff --git a/UrlsAndRoutes/App_Start/RouteConfig.cs b/UrlsAndRoutes/App_Start/RouteConfig.cs index 4e2bea8..0e28295 100644 --- a/UrlsAndRoutes/App_Start/RouteConfig.cs +++ b/UrlsAndRoutes/App_Start/RouteConfig.cs @@ -63,11 +63,18 @@ namespace UrlsAndRoutes // new { controller = "^H.*", action = "^Index|About", httpMethod = new HttpMethodConstraint("GET"), id = new RangeRouteConstraint(10, 20) }, // new[] { "URLsAndROutes.Controllers" }); - routes.MapRoute("MyRoute", "{controller}/{action}/{id}/{*catchall}", - new { controller = "Home", action = "Index", id = UrlParameter.Optional }, - new { controller = "^H.*", action = "^Index|About", httpMethod = new HttpMethodConstraint("GET"), - id = new CompoundRouteConstraint(new IRouteConstraint[] { new AlphaRouteConstraint(), new MinLengthRouteConstraint(6) }) }, - new[] { "URLsAndROutes.Controllers" }); + //routes.MapRoute("MyRoute", "{controller}/{action}/{id}/{*catchall}", + // new { controller = "Home", action = "Index", id = UrlParameter.Optional }, + // new { controller = "^H.*", action = "^Index|About", httpMethod = new HttpMethodConstraint("GET"), + // id = new CompoundRouteConstraint(new IRouteConstraint[] { new AlphaRouteConstraint(), new MinLengthRouteConstraint(6) }) }, + // new[] { "URLsAndROutes.Controllers" }); + + routes.MapMvcAttributeRoutes(); + + routes.MapRoute("NewRoute", "App/Do{action}", new { controller = "Home" }); + + routes.MapRoute("MyRoute", "{controller}/{action}/{id}", + new { controller = "Home", action = "Index", id = UrlParameter.Optional }); } } } diff --git a/UrlsAndRoutes/Controllers/CustomerController.cs b/UrlsAndRoutes/Controllers/CustomerController.cs index cd59823..0ccf169 100644 --- a/UrlsAndRoutes/Controllers/CustomerController.cs +++ b/UrlsAndRoutes/Controllers/CustomerController.cs @@ -6,8 +6,10 @@ using System.Web.Mvc; namespace UrlsAndRoutes.Controllers { + [RoutePrefix("Users")] public class CustomerController : Controller { + [Route("~/Test")] public ActionResult Index() { ViewBag.Controller = "Customer"; @@ -15,6 +17,18 @@ namespace UrlsAndRoutes.Controllers return View("ActionName"); } + [Route("Add/{user}/{id:int}")] + public string Create(string user, int id) + { + return string.Format("User: {0}, ID: {1}", user, id); + } + + [Route("Add/{user}/{password:alpha:length(6)}")] + public string ChangePass(string user, string password) + { + return string.Format("ChangePas Method - User: {0}, Pass: {1}", user, password); + } + public ActionResult List() { ViewBag.Controller = "Customer"; diff --git a/UrlsAndRoutes/UrlsAndRoutes.csproj b/UrlsAndRoutes/UrlsAndRoutes.csproj index 181f269..22ce40c 100644 --- a/UrlsAndRoutes/UrlsAndRoutes.csproj +++ b/UrlsAndRoutes/UrlsAndRoutes.csproj @@ -23,6 +23,7 @@ + ..\packages\WebGrease.1.5.2\lib true @@ -43,10 +44,16 @@ 4 + + ..\packages\Antlr.3.4.1.9004\lib\Antlr3.Runtime.dll + ..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.3\lib\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll + + ..\packages\Newtonsoft.Json.5.0.4\lib\net45\Newtonsoft.Json.dll + @@ -56,6 +63,9 @@ + + ..\packages\Microsoft.AspNet.Web.Optimization.1.1.3\lib\net40\System.Web.Optimization.dll + @@ -63,6 +73,9 @@ + + ..\packages\WebGrease.1.5.2\lib\WebGrease.dll + @@ -92,7 +105,6 @@ - diff --git a/UrlsAndRoutes/Views/Shared/ActionName.cshtml b/UrlsAndRoutes/Views/Shared/ActionName.cshtml index e0fc06f..5cf8af0 100644 --- a/UrlsAndRoutes/Views/Shared/ActionName.cshtml +++ b/UrlsAndRoutes/Views/Shared/ActionName.cshtml @@ -12,5 +12,11 @@
The controller is: @ViewBag.Controller
The action is: @ViewBag.Action
+
+ @Html.ActionLink("This is an outgoing URL", "CustomVariable") +
+
+ @Html.ActionLink("This targets another controller", "Index", "Customer") +
diff --git a/UrlsAndRoutes/Web.config b/UrlsAndRoutes/Web.config index 43634a3..1438dfa 100644 --- a/UrlsAndRoutes/Web.config +++ b/UrlsAndRoutes/Web.config @@ -5,39 +5,39 @@ --> - - - - + + + + - - + + - - + + - - + + - - + + + + + + - - + + diff --git a/UrlsAndRoutes/packages.config b/UrlsAndRoutes/packages.config index 262d240..9127abe 100644 --- a/UrlsAndRoutes/packages.config +++ b/UrlsAndRoutes/packages.config @@ -1,9 +1,13 @@  + + + + \ No newline at end of file