diff --git a/test/Microsoft.AspNet.Mvc.FunctionalTests/Compiler/Resources/MvcTagHelpersWebSite.MvcTagHelper_Home.CreateWarehouse.html b/test/Microsoft.AspNet.Mvc.FunctionalTests/Compiler/Resources/MvcTagHelpersWebSite.MvcTagHelper_Home.CreateWarehouse.html new file mode 100644 index 0000000000..50de9402fd --- /dev/null +++ b/test/Microsoft.AspNet.Mvc.FunctionalTests/Compiler/Resources/MvcTagHelpersWebSite.MvcTagHelper_Home.CreateWarehouse.html @@ -0,0 +1,23 @@ + + + + + +
+ + + +
+
+ + + +
+
+ +
+ \ No newline at end of file diff --git a/test/Microsoft.AspNet.Mvc.FunctionalTests/Compiler/Resources/MvcTagHelpersWebSite.MvcTagHelper_Home.EditWarehouse.html b/test/Microsoft.AspNet.Mvc.FunctionalTests/Compiler/Resources/MvcTagHelpersWebSite.MvcTagHelper_Home.EditWarehouse.html new file mode 100644 index 0000000000..6c17df4b6c --- /dev/null +++ b/test/Microsoft.AspNet.Mvc.FunctionalTests/Compiler/Resources/MvcTagHelpersWebSite.MvcTagHelper_Home.EditWarehouse.html @@ -0,0 +1,47 @@ + + + + + +
+
+ City_1 + +
+
+ + ; +
+
+ + +
+
+ + +
+
+ + + +
+
+ + Female + Male +
+
+ + + +
+ +
+ +
+ + diff --git a/test/Microsoft.AspNet.Mvc.FunctionalTests/Compiler/Resources/MvcTagHelpersWebSite.MvcTagHelper_Home.EmployeeList.html b/test/Microsoft.AspNet.Mvc.FunctionalTests/Compiler/Resources/MvcTagHelpersWebSite.MvcTagHelper_Home.EmployeeList.html new file mode 100644 index 0000000000..35b0467617 --- /dev/null +++ b/test/Microsoft.AspNet.Mvc.FunctionalTests/Compiler/Resources/MvcTagHelpersWebSite.MvcTagHelper_Home.EmployeeList.html @@ -0,0 +1,104 @@ + + + + + +
+
+ + + +
+
+ + +
+
+ + +
+
+ + + +
+
+ + +
+
+ + + +
+
+ + + +
+
+ + +
+
+ + +
+
+ + + +
+
+ + +
+
+ + + +
+
+ + + +
+
+ + +
+
+ + +
+
+ + + +
+
+ + +
+
+ + + +
+
+ \ No newline at end of file diff --git a/test/Microsoft.AspNet.Mvc.FunctionalTests/Compiler/Resources/MvcTagHelpersWebSite.MvcTagHelper_Home.Order.html b/test/Microsoft.AspNet.Mvc.FunctionalTests/Compiler/Resources/MvcTagHelpersWebSite.MvcTagHelper_Home.Order.html index 04a01ad1f8..33456a1703 100644 --- a/test/Microsoft.AspNet.Mvc.FunctionalTests/Compiler/Resources/MvcTagHelpersWebSite.MvcTagHelper_Home.Order.html +++ b/test/Microsoft.AspNet.Mvc.FunctionalTests/Compiler/Resources/MvcTagHelpersWebSite.MvcTagHelper_Home.Order.html @@ -18,12 +18,9 @@
- + +
diff --git a/test/Microsoft.AspNet.Mvc.FunctionalTests/Compiler/Resources/MvcTagHelpersWebSite.MvcTagHelper_Home.ProductList.html b/test/Microsoft.AspNet.Mvc.FunctionalTests/Compiler/Resources/MvcTagHelpersWebSite.MvcTagHelper_Home.ProductList.html new file mode 100644 index 0000000000..80913b1e19 --- /dev/null +++ b/test/Microsoft.AspNet.Mvc.FunctionalTests/Compiler/Resources/MvcTagHelpersWebSite.MvcTagHelper_Home.ProductList.html @@ -0,0 +1,60 @@ + + + + + + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ diff --git a/test/Microsoft.AspNet.Mvc.FunctionalTests/MvcTagHelpersTests.cs b/test/Microsoft.AspNet.Mvc.FunctionalTests/MvcTagHelpersTests.cs index 7407bb7887..7f39fe9c82 100644 --- a/test/Microsoft.AspNet.Mvc.FunctionalTests/MvcTagHelpersTests.cs +++ b/test/Microsoft.AspNet.Mvc.FunctionalTests/MvcTagHelpersTests.cs @@ -26,6 +26,14 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests [InlineData("Order", "/MvcTagHelper_Order/Submit")] [InlineData("Product", null)] [InlineData("Customer", "/Customer/MvcTagHelper_Customer")] + // Testing InputTagHelpers invoked in the partial views + [InlineData("ProductList", null)] + // Testing MvcTagHelpers invoked in the editor templates with the HTML helpers + [InlineData("EmployeeList", null)] + // Testing SelectTagHelper with Html.BeginForm + [InlineData("CreateWarehouse", null)] + // Testing the HTML helpers with FormTagHelper + [InlineData("EditWarehouse", null)] public async Task MvcTagHelpers_GeneratesExpectedResults(string action, string antiForgeryPath) { // Arrange diff --git a/test/WebSites/MvcTagHelpersWebSite/Controllers/MvcTagHelper_HomeController.cs b/test/WebSites/MvcTagHelpersWebSite/Controllers/MvcTagHelper_HomeController.cs index bd0dad40de..e40e39a30f 100644 --- a/test/WebSites/MvcTagHelpersWebSite/Controllers/MvcTagHelper_HomeController.cs +++ b/test/WebSites/MvcTagHelpersWebSite/Controllers/MvcTagHelper_HomeController.cs @@ -12,27 +12,37 @@ namespace MvcTagHelpersWebSite.Controllers { public class MvcTagHelper_HomeController : Controller { + private readonly List _products = new List(); + + public MvcTagHelper_HomeController() + { + _products.Add(new Product + { + ProductName = "Product_0", + Number = 0, + HomePage = new Uri("http://www.contoso.com") + }); + _products.Add(new Product + { + ProductName = "Product_1", + Number = 1, + }); + _products.Add(new Product + { + ProductName = "Product_2", + Number = 2, + Description = "Product_2 desription" + }); + } + public IActionResult Order() { - var products = new List(); - products = new List(); + ViewBag.Items = new SelectList(_products, "Number", "ProductName", 2); - for (int i = 7; i < 13; ++i) - { - products.Add(new Product() - { - ProductName = "Product_" + i, - Number = i, - PartNumbers = Enumerable.Range(1, 3).Select(n => string.Format("{0}-{1}", i, n)) - }); - } - - ViewBag.Items = new SelectList(products, "Number", "ProductName", 9); - - var order = new Order() + var order = new Order { Shipping = "UPSP", - Customer = new Customer() + Customer = new Customer { Key = "KeyA", Number = 1, @@ -48,7 +58,7 @@ namespace MvcTagHelpersWebSite.Controllers public IActionResult Product() { - var product = new Product() + var product = new Product { HomePage = new System.Uri("http://www.contoso.com"), Description = "Type the product description" @@ -70,5 +80,61 @@ namespace MvcTagHelpersWebSite.Controllers { return View(); } + + public IActionResult ProductList() + { + return View(_products); + } + + public IActionResult EmployeeList() + { + var employees = new List(); + + employees.Add(new Employee + { + Name = "EmployeeName_0", + Number = 0, + Address = "Employee_0 address" + }); + employees.Add(new Employee + { + Name = "EmployeeName_1", + Number = 1, + OfficeNumber = "1002", + Gender = Gender.Female + }); + employees.Add(new Employee + { + Name = "EmployeeName_2", + Number = 2, + Remote = true + }); + + return View(employees); + } + + public IActionResult CreateWarehouse() + { + ViewBag.Items = new SelectList(_products, "Number", "ProductName", 9); + + return View(); + } + + public IActionResult EditWarehouse() + { + var warehouse = new Warehouse + { + City = "City_1", + Employee = new Employee + { + Name = "EmployeeName_1", + Number = 1, + Address = "Address_1", + PhoneNumber = "PhoneNumber_1", + Gender = Gender.Female + } + }; + return View(warehouse); + } } } diff --git a/test/WebSites/MvcTagHelpersWebSite/Models/Customer.cs b/test/WebSites/MvcTagHelpersWebSite/Models/Customer.cs index 682b2a0c23..77fc33d17d 100644 --- a/test/WebSites/MvcTagHelpersWebSite/Models/Customer.cs +++ b/test/WebSites/MvcTagHelpersWebSite/Models/Customer.cs @@ -1,56 +1,14 @@ // Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. -using System.ComponentModel.DataAnnotations; - namespace MvcTagHelpersWebSite.Models { - public class Customer + public class Customer : Person { - [Range(1, 100)] - public int Number - { - get; - set; - } - public string Key { get; set; } - - public string Name - { - get; - set; - } - - [Required] - public string Password - { - get; - set; - } - - [EnumDataType(typeof(Gender))] - public Gender Gender - { - get; - set; - } - - public string PhoneNumber - { - get; - set; - } - - [DataType(DataType.EmailAddress)] - public string Email - { - get; - set; - } } } \ No newline at end of file diff --git a/test/WebSites/MvcTagHelpersWebSite/Models/Employee.cs b/test/WebSites/MvcTagHelpersWebSite/Models/Employee.cs new file mode 100644 index 0000000000..3c2364e9c4 --- /dev/null +++ b/test/WebSites/MvcTagHelpersWebSite/Models/Employee.cs @@ -0,0 +1,26 @@ +// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +namespace MvcTagHelpersWebSite.Models +{ + public class Employee : Person + { + public string Address + { + get; + set; + } + + public string OfficeNumber + { + get; + set; + } + + public bool Remote + { + get; + set; + } + } +} \ No newline at end of file diff --git a/test/WebSites/MvcTagHelpersWebSite/Models/Person.cs b/test/WebSites/MvcTagHelpersWebSite/Models/Person.cs new file mode 100644 index 0000000000..1718fe9913 --- /dev/null +++ b/test/WebSites/MvcTagHelpersWebSite/Models/Person.cs @@ -0,0 +1,50 @@ +// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.ComponentModel.DataAnnotations; + +namespace MvcTagHelpersWebSite.Models +{ + public class Person + { + [Range(1, 100)] + public int Number + { + get; + set; + } + + public string Name + { + get; + set; + } + + [Required] + public string Password + { + get; + set; + } + + [EnumDataType(typeof(Gender))] + public Gender Gender + { + get; + set; + } + + public string PhoneNumber + { + get; + set; + } + + [DataType(DataType.EmailAddress)] + public string Email + { + get; + set; + } + } +} \ No newline at end of file diff --git a/test/WebSites/MvcTagHelpersWebSite/Models/Product.cs b/test/WebSites/MvcTagHelpersWebSite/Models/Product.cs index bdf4db8030..818f4667e5 100644 --- a/test/WebSites/MvcTagHelpersWebSite/Models/Product.cs +++ b/test/WebSites/MvcTagHelpersWebSite/Models/Product.cs @@ -28,12 +28,6 @@ namespace MvcTagHelpersWebSite.Models set; } - public IEnumerable PartNumbers - { - get; - set; - } - public Uri HomePage { get; diff --git a/test/WebSites/MvcTagHelpersWebSite/Models/Warehouse.cs b/test/WebSites/MvcTagHelpersWebSite/Models/Warehouse.cs new file mode 100644 index 0000000000..91171edb78 --- /dev/null +++ b/test/WebSites/MvcTagHelpersWebSite/Models/Warehouse.cs @@ -0,0 +1,30 @@ +// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.ComponentModel.DataAnnotations; + +namespace MvcTagHelpersWebSite.Models +{ + public class Warehouse + { + [MinLength(2)] + public string City + { + get; + set; + } + + [Range(1, 100)] + public int Product + { + get; + set; + } + + public Employee Employee + { + get; + set; + } + } +} \ No newline at end of file diff --git a/test/WebSites/MvcTagHelpersWebSite/Views/MvcTagHelper_Home/CreateWarehouse.cshtml b/test/WebSites/MvcTagHelpersWebSite/Views/MvcTagHelper_Home/CreateWarehouse.cshtml new file mode 100644 index 0000000000..8e2063b18d --- /dev/null +++ b/test/WebSites/MvcTagHelpersWebSite/Views/MvcTagHelper_Home/CreateWarehouse.cshtml @@ -0,0 +1,27 @@ +@model MvcTagHelpersWebSite.Models.Warehouse + +@addtaghelper "Microsoft.AspNet.Mvc.TagHelpers" + +@{ + ViewBag.Title = "Warehouse - Product"; +} + + + + @using (Html.BeginForm("CreateWarehouse", "MvcTagHelper_Home")) + { +
+
+
+