From ea8906435b301706742f9830dcb92198a9105a6b Mon Sep 17 00:00:00 2001 From: Doug Bunting Date: Tue, 7 Oct 2014 12:15:52 -0700 Subject: [PATCH 1/2] Add TagHelperSample.Web --- Mvc.sln | 13 ++++ .../Controllers/HomeController.cs | 75 +++++++++++++++++++ samples/TagHelperSample.Web/Models/User.cs | 18 +++++ samples/TagHelperSample.Web/Startup.cs | 15 ++++ .../TagHelperSample.Web.kproj | 18 +++++ .../Views/Home/Create.cshtml | 65 ++++++++++++++++ .../Views/Home/Edit.cshtml | 63 ++++++++++++++++ .../Views/Home/Index.cshtml | 35 +++++++++ samples/TagHelperSample.Web/project.json | 24 ++++++ 9 files changed, 326 insertions(+) create mode 100644 samples/TagHelperSample.Web/Controllers/HomeController.cs create mode 100644 samples/TagHelperSample.Web/Models/User.cs create mode 100644 samples/TagHelperSample.Web/Startup.cs create mode 100644 samples/TagHelperSample.Web/TagHelperSample.Web.kproj create mode 100644 samples/TagHelperSample.Web/Views/Home/Create.cshtml create mode 100644 samples/TagHelperSample.Web/Views/Home/Edit.cshtml create mode 100644 samples/TagHelperSample.Web/Views/Home/Index.cshtml create mode 100644 samples/TagHelperSample.Web/project.json diff --git a/Mvc.sln b/Mvc.sln index 0285f207dd..59bd3100a5 100644 --- a/Mvc.sln +++ b/Mvc.sln @@ -92,6 +92,8 @@ Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "RazorInstrumentationWebSite EndProject Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "ApplicationModelWebSite", "test\WebSites\ApplicationModelWebSite\ApplicationModelWebSite.kproj", "{CAE52CB7-0FAC-4B5B-8251-B0FF837DB657}" EndProject +Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "TagHelperSample.Web", "samples\TagHelperSample.Web\TagHelperSample.Web.kproj", "{2223120F-D675-40DA-8CD8-11DC14A0B2C7}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -482,6 +484,16 @@ Global {6DB9B8D0-80F7-4E70-BBB0-0B4C04D79A47}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {6DB9B8D0-80F7-4E70-BBB0-0B4C04D79A47}.Release|Mixed Platforms.Build.0 = Release|Any CPU {6DB9B8D0-80F7-4E70-BBB0-0B4C04D79A47}.Release|x86.ActiveCfg = Release|Any CPU + {2223120F-D675-40DA-8CD8-11DC14A0B2C7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2223120F-D675-40DA-8CD8-11DC14A0B2C7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2223120F-D675-40DA-8CD8-11DC14A0B2C7}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {2223120F-D675-40DA-8CD8-11DC14A0B2C7}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {2223120F-D675-40DA-8CD8-11DC14A0B2C7}.Debug|x86.ActiveCfg = Debug|Any CPU + {2223120F-D675-40DA-8CD8-11DC14A0B2C7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2223120F-D675-40DA-8CD8-11DC14A0B2C7}.Release|Any CPU.Build.0 = Release|Any CPU + {2223120F-D675-40DA-8CD8-11DC14A0B2C7}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {2223120F-D675-40DA-8CD8-11DC14A0B2C7}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {2223120F-D675-40DA-8CD8-11DC14A0B2C7}.Release|x86.ActiveCfg = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -526,5 +538,6 @@ Global {2B2B9876-903C-4065-8D62-2EE832BBA106} = {16703B76-C9F7-4C75-AE6C-53D92E308E3C} {CAE52CB7-0FAC-4B5B-8251-B0FF837DB657} = {16703B76-C9F7-4C75-AE6C-53D92E308E3C} {6DB9B8D0-80F7-4E70-BBB0-0B4C04D79A47} = {16703B76-C9F7-4C75-AE6C-53D92E308E3C} + {2223120F-D675-40DA-8CD8-11DC14A0B2C7} = {DAAE4C74-D06F-4874-A166-33305D2643CE} EndGlobalSection EndGlobal diff --git a/samples/TagHelperSample.Web/Controllers/HomeController.cs b/samples/TagHelperSample.Web/Controllers/HomeController.cs new file mode 100644 index 0000000000..1a9188cdf9 --- /dev/null +++ b/samples/TagHelperSample.Web/Controllers/HomeController.cs @@ -0,0 +1,75 @@ + +using System.Collections.Generic; +using System.Linq; +using Microsoft.AspNet.Mvc; +using Microsoft.AspNet.Mvc.Rendering; +using TagHelperSample.Web.Models; + +namespace TagHelperSample.Web.Controllers +{ + public class HomeController : Controller + { + private static readonly IEnumerable _items = new SelectList(Enumerable.Range(7, 13)); + private static readonly Dictionary _users = new Dictionary(); + private static int _next; + + public HomeController() + { + // Unable to set ViewBag from constructor. Does this work in MVC 5.2? + ////ViewBag.Items = _items; + } + + // GET: // + public IActionResult Index() + { + return View(_users.Values); + } + + // GET: /Home/Create + public IActionResult Create() + { + ViewBag.Items = _items; + return View(); + } + + // POST: Home/Create + [HttpPost] + public IActionResult Create(User user) + { + if (user != null && ModelState.IsValid) + { + var id = _next++; + user.Id = id; + _users[id] = user; + return RedirectToAction("Index"); + } + + ViewBag.Items = _items; + return View(); + } + + // GET: /Home/Edit/5 + public IActionResult Edit(int id) + { + User user; + _users.TryGetValue(id, out user); + + ViewBag.Items = _items; + return View(user); + } + + // POST: Home/Edit/5 + [HttpPost] + public IActionResult Edit(int id, User user) + { + if (user != null && id == user.Id && _users.ContainsKey(id) && ModelState.IsValid) + { + _users[id] = user; + return RedirectToAction("Index"); + } + + ViewBag.Items = _items; + return View(); + } + } +} diff --git a/samples/TagHelperSample.Web/Models/User.cs b/samples/TagHelperSample.Web/Models/User.cs new file mode 100644 index 0000000000..eb1b574a67 --- /dev/null +++ b/samples/TagHelperSample.Web/Models/User.cs @@ -0,0 +1,18 @@ + +using System; + +namespace TagHelperSample.Web.Models +{ + public class User + { + public int Id { get; set; } + + public string Name { get; set; } + + public string Blurb { get; set; } + + public DateTimeOffset DateOfBirth { get; set; } + + public int YearsEmployeed { get; set; } + } +} \ No newline at end of file diff --git a/samples/TagHelperSample.Web/Startup.cs b/samples/TagHelperSample.Web/Startup.cs new file mode 100644 index 0000000000..bf2cd2d968 --- /dev/null +++ b/samples/TagHelperSample.Web/Startup.cs @@ -0,0 +1,15 @@ + +using Microsoft.AspNet.Builder; +using Microsoft.Framework.DependencyInjection; + +namespace TagHelperSample.Web +{ + public class Startup + { + public void Configure(IApplicationBuilder app) + { + app.UseServices(services => services.AddMvc()); + app.UseMvc(); + } + } +} diff --git a/samples/TagHelperSample.Web/TagHelperSample.Web.kproj b/samples/TagHelperSample.Web/TagHelperSample.Web.kproj new file mode 100644 index 0000000000..3d932a6a8f --- /dev/null +++ b/samples/TagHelperSample.Web/TagHelperSample.Web.kproj @@ -0,0 +1,18 @@ + + + + 14.0 + $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) + + + + 2223120f-d675-40da-8cd8-11dc14a0b2c7 + Web + TagHelperSample.Web + + + 2.0 + 31726 + + + \ No newline at end of file diff --git a/samples/TagHelperSample.Web/Views/Home/Create.cshtml b/samples/TagHelperSample.Web/Views/Home/Create.cshtml new file mode 100644 index 0000000000..29cc0069ff --- /dev/null +++ b/samples/TagHelperSample.Web/Views/Home/Create.cshtml @@ -0,0 +1,65 @@ + +@using TagHelperSample.Web.Models +@model User + +

Create

+ +
+ @Html.AntiForgeryToken() + +
+ + + @* element will have correct name and id attributes for Id property. but will submit a constant value. *@ + + +
+
+
+
+
+
+
+
+ +
+
+ +
+
+
+
+ + diff --git a/samples/TagHelperSample.Web/Views/Home/Edit.cshtml b/samples/TagHelperSample.Web/Views/Home/Edit.cshtml new file mode 100644 index 0000000000..0f0cf85afc --- /dev/null +++ b/samples/TagHelperSample.Web/Views/Home/Edit.cshtml @@ -0,0 +1,63 @@ + +@using TagHelperSample.Web.Models +@model User + +

Edit

+ +
+ @Html.AntiForgeryToken() + +
+ + + +
+
+
+
+
+
+
+
+ +
+
+ +
+
+
+
+ + diff --git a/samples/TagHelperSample.Web/Views/Home/Index.cshtml b/samples/TagHelperSample.Web/Views/Home/Index.cshtml new file mode 100644 index 0000000000..6f882be960 --- /dev/null +++ b/samples/TagHelperSample.Web/Views/Home/Index.cshtml @@ -0,0 +1,35 @@ + +@using TagHelperSample.Web.Models +@model IEnumerable + +

Index

+

+ Create New +

+ +@if (Model != null && Model.Count() != 0) +{ +
+ @foreach (var item in Model) + { +
+
+
+
+
+
+
+
+ @* this lacks a "for" attribute and will not be changed by the tag helper *@
diff --git a/samples/TagHelperSample.Web/Views/Home/Edit.cshtml b/samples/TagHelperSample.Web/Views/Home/Edit.cshtml index 0f0cf85afc..15003e6c88 100644 --- a/samples/TagHelperSample.Web/Views/Home/Edit.cshtml +++ b/samples/TagHelperSample.Web/Views/Home/Edit.cshtml @@ -5,24 +5,22 @@

Edit

- @Html.AntiForgeryToken() -
- +
@@ -39,14 +37,14 @@ - +
diff --git a/samples/TagHelperSample.Web/Views/Home/Index.cshtml b/samples/TagHelperSample.Web/Views/Home/Index.cshtml index 6f882be960..f07d0bcf76 100644 --- a/samples/TagHelperSample.Web/Views/Home/Index.cshtml +++ b/samples/TagHelperSample.Web/Views/Home/Index.cshtml @@ -29,7 +29,7 @@