diff --git a/LearningMVC.sln b/LearningMVC.sln index 86e75c1..a84536d 100644 --- a/LearningMVC.sln +++ b/LearningMVC.sln @@ -17,6 +17,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SportsStore.UnitTests", "Sp EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SportsStore.WebUI", "SportsStore.WebUI\SportsStore.WebUI.csproj", "{60C0A10C-9CDD-48C8-9C39-E619D2653079}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UrlsAndRoutes", "UrlsAndRoutes\UrlsAndRoutes.csproj", "{FD2BDAD8-1914-4278-A6D4-733D64CCB77D}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UrlsAndRoutes.Tests", "UrlsAndRoutes.Tests\UrlsAndRoutes.Tests.csproj", "{27523E65-8999-44FC-8777-862A1084E0D6}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -51,6 +55,14 @@ Global {60C0A10C-9CDD-48C8-9C39-E619D2653079}.Debug|Any CPU.Build.0 = Debug|Any CPU {60C0A10C-9CDD-48C8-9C39-E619D2653079}.Release|Any CPU.ActiveCfg = Release|Any CPU {60C0A10C-9CDD-48C8-9C39-E619D2653079}.Release|Any CPU.Build.0 = Release|Any CPU + {FD2BDAD8-1914-4278-A6D4-733D64CCB77D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FD2BDAD8-1914-4278-A6D4-733D64CCB77D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FD2BDAD8-1914-4278-A6D4-733D64CCB77D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FD2BDAD8-1914-4278-A6D4-733D64CCB77D}.Release|Any CPU.Build.0 = Release|Any CPU + {27523E65-8999-44FC-8777-862A1084E0D6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {27523E65-8999-44FC-8777-862A1084E0D6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {27523E65-8999-44FC-8777-862A1084E0D6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {27523E65-8999-44FC-8777-862A1084E0D6}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/UrlsAndRoutes.Tests/Properties/AssemblyInfo.cs b/UrlsAndRoutes.Tests/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..42e07a6 --- /dev/null +++ b/UrlsAndRoutes.Tests/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("UrlsAndRoutes.Tests")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("UrlsAndRoutes.Tests")] +[assembly: AssemblyCopyright("Copyright © 2017")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("27523e65-8999-44fc-8777-862a1084e0d6")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/UrlsAndRoutes.Tests/UnitTest1.cs b/UrlsAndRoutes.Tests/UnitTest1.cs new file mode 100644 index 0000000..968891e --- /dev/null +++ b/UrlsAndRoutes.Tests/UnitTest1.cs @@ -0,0 +1,14 @@ +using System; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace UrlsAndRoutes.Tests +{ + [TestClass] + public class UnitTest1 + { + [TestMethod] + public void TestMethod1() + { + } + } +} diff --git a/UrlsAndRoutes.Tests/UrlsAndRoutes.Tests.csproj b/UrlsAndRoutes.Tests/UrlsAndRoutes.Tests.csproj new file mode 100644 index 0000000..7ca7445 --- /dev/null +++ b/UrlsAndRoutes.Tests/UrlsAndRoutes.Tests.csproj @@ -0,0 +1,75 @@ + + + + Debug + AnyCPU + {27523E65-8999-44FC-8777-862A1084E0D6} + Library + Properties + UrlsAndRoutes.Tests + UrlsAndRoutes.Tests + v4.5.2 + 512 + {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + False + UnitTest + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + ..\packages\Moq.4.1.1309.1617\lib\net40\Moq.dll + + + + + + + + + + + + + + + + + + + + + {FD2BDAD8-1914-4278-A6D4-733D64CCB77D} + UrlsAndRoutes + + + + + + + + + \ No newline at end of file diff --git a/UrlsAndRoutes.Tests/packages.config b/UrlsAndRoutes.Tests/packages.config new file mode 100644 index 0000000..349b7ff --- /dev/null +++ b/UrlsAndRoutes.Tests/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/UrlsAndRoutes/AdditionalControllers/HomeController.cs b/UrlsAndRoutes/AdditionalControllers/HomeController.cs new file mode 100644 index 0000000..70f22a8 --- /dev/null +++ b/UrlsAndRoutes/AdditionalControllers/HomeController.cs @@ -0,0 +1,18 @@ +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 new file mode 100644 index 0000000..4e2bea8 --- /dev/null +++ b/UrlsAndRoutes/App_Start/RouteConfig.cs @@ -0,0 +1,73 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.Mvc; +using System.Web.Routing; +using System.Web.Mvc.Routing.Constraints; + +namespace UrlsAndRoutes +{ + public class RouteConfig + { + public static void RegisterRoutes(RouteCollection routes) + { + //routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); + + //routes.MapRoute( + // name: "Default", + // url: "{controller}/{action}/{id}", + // defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } + //); + + //routes.MapRoute("ShopSchema2", "Shop/OldAction", new { controller = "Home", action = "Index" }); + + //routes.MapRoute("ShopSchema", "Shop/{action}", new { controller = "Home" }); + + //routes.MapRoute("", "X{controller}/{action}"); + + //Route myRoute = new Route("{controller}/{action}", new MvcRouteHandler()); + //routes.Add("MyRoute", myRoute); + + //routes.MapRoute("MyRoute", "{controller}/{action}"); + + //routes.MapRoute("MyRoute", "{controller}/{action}", new { action = "Index" }); + + //routes.MapRoute("MyRoute", "{controller}/{action}", new { controller = "Home", action = "Index" }); + + //routes.MapRoute("", "Public/{controller}/{action}", new { controler = "Home", action = "Index" }); + + //routes.MapRoute("MyRoute", "{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = UrlParameter.Optional /* "DefaultId" */ }); + + //routes.MapRoute("MyRoute", "{controller}/{action}/{id}/{*catchall}", new { controller = "Home", action = "Index", id = UrlParameter.Optional }); + + //routes.MapRoute("MyRoute", "{controller}/{action}/{id}/{*catchall}", new { controller = "Home", action = "Index", id = UrlParameter.Optional }, + // new[] { "URLsAndRoutes.AdditionalControllers" }); + + //routes.MapRoute("MyRoute", "{controller}/{action}/{id}/{*catchall}", new { controller = "Home", action = "Index", id = UrlParameter.Optional }, + // new[] { "URLsAndRoutes.Controllers" }); + + //Route myRoute = routes.MapRoute("AddControllerRoute", "Home/{action}/{id}/{*catchall}", + // new { controller = "Home", action = "Index", id = UrlParameter.Optional }, + // new[] { "UrlsAndRoutes.AdditionalControllers" }); + + //myRoute.DataTokens["UseNamespaceFallback"] = false; + + //routes.MapRoute("MyRoute", "{controller}/{action}/{id}/{*catchall}", + // new { controller = "Home", action = "Index", id = UrlParameter.Optional }, + // new { controller = "^H.*", action = "^Index$ | ^About$" }, + // 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 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" }); + } + } +} diff --git a/UrlsAndRoutes/Controllers/AdminController.cs b/UrlsAndRoutes/Controllers/AdminController.cs new file mode 100644 index 0000000..c086f8e --- /dev/null +++ b/UrlsAndRoutes/Controllers/AdminController.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.Mvc; + +namespace UrlsAndRoutes.Controllers +{ + public class AdminController : Controller + { + public ActionResult Index() + { + ViewBag.Controller = "Admin"; + ViewBag.Action = "Index"; + return View("ActionName"); + } + } +} \ No newline at end of file diff --git a/UrlsAndRoutes/Controllers/CustomerController.cs b/UrlsAndRoutes/Controllers/CustomerController.cs new file mode 100644 index 0000000..cd59823 --- /dev/null +++ b/UrlsAndRoutes/Controllers/CustomerController.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.Mvc; + +namespace UrlsAndRoutes.Controllers +{ + public class CustomerController : Controller + { + public ActionResult Index() + { + ViewBag.Controller = "Customer"; + ViewBag.Action = "Index"; + return View("ActionName"); + } + + public ActionResult List() + { + ViewBag.Controller = "Customer"; + ViewBag.Action = "List"; + return View("ActionName"); + } + } +} \ No newline at end of file diff --git a/UrlsAndRoutes/Controllers/HomeController.cs b/UrlsAndRoutes/Controllers/HomeController.cs new file mode 100644 index 0000000..a224e01 --- /dev/null +++ b/UrlsAndRoutes/Controllers/HomeController.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.Mvc; + +namespace UrlsAndRoutes.Controllers +{ + public class HomeController : Controller + { + public ActionResult Index() + { + ViewBag.Controller = "Home"; + ViewBag.Action = "Index"; + return View("ActionName"); + } + + public ActionResult CustomVariable(string id = "DefaultId") + { + ViewBag.Controller = "Home"; + ViewBag.Action = "CustomVariable"; + ViewBag.CustomVariable = id; // ?? ""; // id; // RouteData.Values["id"]; + return View(); + } + } +} \ No newline at end of file diff --git a/UrlsAndRoutes/Global.asax b/UrlsAndRoutes/Global.asax new file mode 100644 index 0000000..75837d7 --- /dev/null +++ b/UrlsAndRoutes/Global.asax @@ -0,0 +1 @@ +<%@ Application Codebehind="Global.asax.cs" Inherits="UrlsAndRoutes.MvcApplication" Language="C#" %> diff --git a/UrlsAndRoutes/Global.asax.cs b/UrlsAndRoutes/Global.asax.cs new file mode 100644 index 0000000..129167d --- /dev/null +++ b/UrlsAndRoutes/Global.asax.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.Mvc; +using System.Web.Routing; + +namespace UrlsAndRoutes +{ + public class MvcApplication : System.Web.HttpApplication + { + protected void Application_Start() + { + AreaRegistration.RegisterAllAreas(); + RouteConfig.RegisterRoutes(RouteTable.Routes); + } + } +} diff --git a/UrlsAndRoutes/Properties/AssemblyInfo.cs b/UrlsAndRoutes/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..74e5eb9 --- /dev/null +++ b/UrlsAndRoutes/Properties/AssemblyInfo.cs @@ -0,0 +1,35 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("UrlsAndRoutes")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("UrlsAndRoutes")] +[assembly: AssemblyCopyright("Copyright © 2017")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("fd2bdad8-1914-4278-a6d4-733d64ccb77d")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Revision and Build Numbers +// by using the '*' as shown below: +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/UrlsAndRoutes/UrlsAndRoutes.csproj b/UrlsAndRoutes/UrlsAndRoutes.csproj new file mode 100644 index 0000000..181f269 --- /dev/null +++ b/UrlsAndRoutes/UrlsAndRoutes.csproj @@ -0,0 +1,162 @@ + + + + + + Debug + AnyCPU + + + 2.0 + {FD2BDAD8-1914-4278-A6D4-733D64CCB77D} + {349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc} + Library + Properties + UrlsAndRoutes + UrlsAndRoutes + v4.5.2 + true + + + + + + + + + + true + full + false + bin\ + DEBUG;TRACE + prompt + 4 + + + true + pdbonly + true + bin\ + TRACE + prompt + 4 + + + + ..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.3\lib\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll + + + + + + + + + + + + + + + + + + + + + + ..\packages\Microsoft.AspNet.Razor.3.2.3\lib\net45\System.Web.Razor.dll + + + ..\packages\Microsoft.AspNet.Webpages.3.2.3\lib\net45\System.Web.Webpages.dll + + + ..\packages\Microsoft.AspNet.Webpages.3.2.3\lib\net45\System.Web.Webpages.Deployment.dll + + + ..\packages\Microsoft.AspNet.Webpages.3.2.3\lib\net45\System.Web.Webpages.Razor.dll + + + ..\packages\Microsoft.AspNet.Webpages.3.2.3\lib\net45\System.Web.Helpers.dll + + + ..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll + + + ..\packages\Microsoft.AspNet.Mvc.5.2.3\lib\net45\System.Web.Mvc.dll + + + + + + + + + + + + + + Global.asax + + + + + + + + + + Web.config + + + Web.config + + + + + + + + + + 10.0 + $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) + + + + + + + + + True + True + 20903 + / + http://localhost:20903/ + False + False + + + False + + + + + + + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + + + + \ No newline at end of file diff --git a/UrlsAndRoutes/Views/Home/CustomVariable.cshtml b/UrlsAndRoutes/Views/Home/CustomVariable.cshtml new file mode 100644 index 0000000..2402b0d --- /dev/null +++ b/UrlsAndRoutes/Views/Home/CustomVariable.cshtml @@ -0,0 +1,17 @@ +@{ + Layout = null; +} + + + + + + + Custom Variable + + +
The controller is: @ViewBag.Controller
+
The action is: @ViewBag.Action
+
The Custom variable is: @ViewBag.CustomVariable
+ + diff --git a/UrlsAndRoutes/Views/Shared/ActionName.cshtml b/UrlsAndRoutes/Views/Shared/ActionName.cshtml new file mode 100644 index 0000000..e0fc06f --- /dev/null +++ b/UrlsAndRoutes/Views/Shared/ActionName.cshtml @@ -0,0 +1,16 @@ +@{ + Layout = null; +} + + + + + + + ActionName + + +
The controller is: @ViewBag.Controller
+
The action is: @ViewBag.Action
+ + diff --git a/UrlsAndRoutes/Views/web.config b/UrlsAndRoutes/Views/web.config new file mode 100644 index 0000000..fdb140c --- /dev/null +++ b/UrlsAndRoutes/Views/web.config @@ -0,0 +1,42 @@ + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/UrlsAndRoutes/Web.Debug.config b/UrlsAndRoutes/Web.Debug.config new file mode 100644 index 0000000..fae9cfe --- /dev/null +++ b/UrlsAndRoutes/Web.Debug.config @@ -0,0 +1,30 @@ + + + + + + + + + + \ No newline at end of file diff --git a/UrlsAndRoutes/Web.Release.config b/UrlsAndRoutes/Web.Release.config new file mode 100644 index 0000000..da6e960 --- /dev/null +++ b/UrlsAndRoutes/Web.Release.config @@ -0,0 +1,31 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/UrlsAndRoutes/Web.config b/UrlsAndRoutes/Web.config new file mode 100644 index 0000000..43634a3 --- /dev/null +++ b/UrlsAndRoutes/Web.config @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/UrlsAndRoutes/packages.config b/UrlsAndRoutes/packages.config new file mode 100644 index 0000000..262d240 --- /dev/null +++ b/UrlsAndRoutes/packages.config @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file