From 88e14a0bfe4836e7019a097f638692f78e1ff6aa Mon Sep 17 00:00:00 2001 From: Fabien Lavocat Date: Wed, 24 Jan 2018 07:43:13 -0800 Subject: [PATCH 1/3] Add constructor for the SelectListItem class --- .../Internal/DefaultDisplayTemplates.cs | 21 +++---------------- .../Rendering/SelectListItem.cs | 10 +++++++++ 2 files changed, 13 insertions(+), 18 deletions(-) diff --git a/src/Microsoft.AspNetCore.Mvc.ViewFeatures/Internal/DefaultDisplayTemplates.cs b/src/Microsoft.AspNetCore.Mvc.ViewFeatures/Internal/DefaultDisplayTemplates.cs index 34ca71d103..eb071f5807 100644 --- a/src/Microsoft.AspNetCore.Mvc.ViewFeatures/Internal/DefaultDisplayTemplates.cs +++ b/src/Microsoft.AspNetCore.Mvc.ViewFeatures/Internal/DefaultDisplayTemplates.cs @@ -64,24 +64,9 @@ namespace Microsoft.AspNetCore.Mvc.ViewFeatures.Internal { return new List { - new SelectListItem - { - Text = Resources.Common_TriState_NotSet, - Value = string.Empty, - Selected = !value.HasValue - }, - new SelectListItem - { - Text = Resources.Common_TriState_True, - Value = "true", - Selected = (value == true), - }, - new SelectListItem - { - Text = Resources.Common_TriState_False, - Value = "false", - Selected = (value == false), - }, + new SelectListItem(Resources.Common_TriState_NotSet, string.Empty, !value.HasValue), + new SelectListItem(Resources.Common_TriState_True, "true", (value == true)), + new SelectListItem(Resources.Common_TriState_False, "false", (value == false)), }; } diff --git a/src/Microsoft.AspNetCore.Mvc.ViewFeatures/Rendering/SelectListItem.cs b/src/Microsoft.AspNetCore.Mvc.ViewFeatures/Rendering/SelectListItem.cs index a56f3068b2..af32345074 100644 --- a/src/Microsoft.AspNetCore.Mvc.ViewFeatures/Rendering/SelectListItem.cs +++ b/src/Microsoft.AspNetCore.Mvc.ViewFeatures/Rendering/SelectListItem.cs @@ -10,6 +10,16 @@ namespace Microsoft.AspNetCore.Mvc.Rendering /// public class SelectListItem { + public SelectListItem() { } + + public SelectListItem(string text, string value, bool selected = false, bool disabled = false) + { + Disabled = disabled; + Selected = selected; + Text = text; + Value = value; + } + /// /// Gets or sets a value that indicates whether this is disabled. /// This property is typically rendered as a disabled="disabled" attribute in the HTML From a2420688ff7b4cd73b891e8e9d91655def5d5089 Mon Sep 17 00:00:00 2001 From: Fabien Lavocat Date: Mon, 5 Feb 2018 10:54:55 -0800 Subject: [PATCH 2/3] Add comments and remove default values in the contructor --- .../Rendering/SelectListItem.cs | 27 ++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/src/Microsoft.AspNetCore.Mvc.ViewFeatures/Rendering/SelectListItem.cs b/src/Microsoft.AspNetCore.Mvc.ViewFeatures/Rendering/SelectListItem.cs index af32345074..bca0dd88e7 100644 --- a/src/Microsoft.AspNetCore.Mvc.ViewFeatures/Rendering/SelectListItem.cs +++ b/src/Microsoft.AspNetCore.Mvc.ViewFeatures/Rendering/SelectListItem.cs @@ -10,14 +10,35 @@ namespace Microsoft.AspNetCore.Mvc.Rendering /// public class SelectListItem { + /// + /// Initializes a new instance of . + /// public SelectListItem() { } - public SelectListItem(string text, string value, bool selected = false, bool disabled = false) + /// + /// Initializes a new instance of . + /// + /// The display text of this . + /// The value of this . + public SelectListItem(string text, string value) + : this() + { + Text = text; + Value = value; + } + + /// + /// Initializes a new instance of . + /// + /// The display text of this . + /// The value of this . + /// Value that indicates whether this is selected. + /// Value that indicates whether this is disabled. + public SelectListItem(string text, string value, bool selected, bool disabled) + : this(text, value) { Disabled = disabled; Selected = selected; - Text = text; - Value = value; } /// From c062d637feb53306312f8fae07db6fd229f2eb6f Mon Sep 17 00:00:00 2001 From: Fabien Lavocat Date: Tue, 6 Feb 2018 11:01:24 -0800 Subject: [PATCH 3/3] Add new contructor in SelectListItem.cs --- .../Rendering/SelectListItem.cs | 17 ++++++-- .../HtmlHelperDropDownListExtensionsTest.cs | 32 +++++++-------- .../HtmlHelperListBoxExtensionsTest.cs | 24 +++++------ .../Rendering/HtmlHelperSelectTest.cs | 40 +++++++++---------- 4 files changed, 62 insertions(+), 51 deletions(-) diff --git a/src/Microsoft.AspNetCore.Mvc.ViewFeatures/Rendering/SelectListItem.cs b/src/Microsoft.AspNetCore.Mvc.ViewFeatures/Rendering/SelectListItem.cs index bca0dd88e7..4a3efe43fb 100644 --- a/src/Microsoft.AspNetCore.Mvc.ViewFeatures/Rendering/SelectListItem.cs +++ b/src/Microsoft.AspNetCore.Mvc.ViewFeatures/Rendering/SelectListItem.cs @@ -33,14 +33,25 @@ namespace Microsoft.AspNetCore.Mvc.Rendering /// The display text of this . /// The value of this . /// Value that indicates whether this is selected. - /// Value that indicates whether this is disabled. - public SelectListItem(string text, string value, bool selected, bool disabled) + public SelectListItem(string text, string value, bool selected) : this(text, value) { - Disabled = disabled; Selected = selected; } + /// + /// Initializes a new instance of . + /// + /// The display text of this . + /// The value of this . + /// Value that indicates whether this is selected. + /// Value that indicates whether this is disabled. + public SelectListItem(string text, string value, bool selected, bool disabled) + : this(text, value, selected) + { + Disabled = disabled; + } + /// /// Gets or sets a value that indicates whether this is disabled. /// This property is typically rendered as a disabled="disabled" attribute in the HTML diff --git a/test/Microsoft.AspNetCore.Mvc.ViewFeatures.Test/Rendering/HtmlHelperDropDownListExtensionsTest.cs b/test/Microsoft.AspNetCore.Mvc.ViewFeatures.Test/Rendering/HtmlHelperDropDownListExtensionsTest.cs index d3de94321f..b7d1846b0b 100644 --- a/test/Microsoft.AspNetCore.Mvc.ViewFeatures.Test/Rendering/HtmlHelperDropDownListExtensionsTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.ViewFeatures.Test/Rendering/HtmlHelperDropDownListExtensionsTest.cs @@ -15,10 +15,10 @@ namespace Microsoft.AspNetCore.Mvc.Core { private static readonly List BasicSelectList = new List { - new SelectListItem { Text = "Zero", Value = "0"}, - new SelectListItem { Text = "One", Value = "1"}, - new SelectListItem { Text = "Two", Value = "2"}, - new SelectListItem { Text = "Three", Value = "3"}, + new SelectListItem("Zero", "0"), + new SelectListItem("One", "1"), + new SelectListItem("Two", "2"), + new SelectListItem("Three", "3"), }; [Fact] @@ -78,8 +78,8 @@ namespace Microsoft.AspNetCore.Mvc.Core ""; var selectList = new List { - new SelectListItem { Text = "Four", Value = "4" }, - new SelectListItem { Text = "Five", Value = "5" }, + new SelectListItem("Four", "4"), + new SelectListItem("Five", "5"), }; var metadataProvider = new EmptyModelMetadataProvider(); var helper = DefaultTemplatesUtilities.GetHtmlHelper(new ViewDataDictionary(metadataProvider)); @@ -103,8 +103,8 @@ namespace Microsoft.AspNetCore.Mvc.Core ""; var selectList = new List { - new SelectListItem { Text = "Four", Value = "4" }, - new SelectListItem { Text = "Five", Value = "5" }, + new SelectListItem("Four", "4"), + new SelectListItem("Five", "5"), }; var metadataProvider = new EmptyModelMetadataProvider(); var helper = DefaultTemplatesUtilities.GetHtmlHelper(new ViewDataDictionary(metadataProvider)); @@ -130,8 +130,8 @@ namespace Microsoft.AspNetCore.Mvc.Core ""; var selectList = new List { - new SelectListItem { Text = "Four", Value = "4" }, - new SelectListItem { Text = "Five", Value = "5" }, + new SelectListItem("Four", "4"), + new SelectListItem("Five", "5"), }; var metadataProvider = new EmptyModelMetadataProvider(); var helper = DefaultTemplatesUtilities.GetHtmlHelper(new ViewDataDictionary(metadataProvider)); @@ -178,8 +178,8 @@ namespace Microsoft.AspNetCore.Mvc.Core ""; var selectList = new List { - new SelectListItem { Text = "Four", Value = "4" }, - new SelectListItem { Text = "Five", Value = "5" }, + new SelectListItem("Four", "4"), + new SelectListItem("Five", "5"), }; var metadataProvider = new EmptyModelMetadataProvider(); var helper = DefaultTemplatesUtilities.GetHtmlHelper(new ViewDataDictionary(metadataProvider)); @@ -204,8 +204,8 @@ namespace Microsoft.AspNetCore.Mvc.Core ""; var selectList = new List { - new SelectListItem { Text = "Four", Value = "4" }, - new SelectListItem { Text = "Five", Value = "5" }, + new SelectListItem("Four", "4"), + new SelectListItem("Five", "5"), }; var metadataProvider = new EmptyModelMetadataProvider(); var helper = DefaultTemplatesUtilities.GetHtmlHelper(new ViewDataDictionary(metadataProvider)); @@ -230,8 +230,8 @@ namespace Microsoft.AspNetCore.Mvc.Core ""; var selectList = new List { - new SelectListItem { Text = "Four", Value = "4" }, - new SelectListItem { Text = "Five", Value = "5" }, + new SelectListItem("Four", "4"), + new SelectListItem("Five", "5"), }; var metadataProvider = new EmptyModelMetadataProvider(); var helper = DefaultTemplatesUtilities.GetHtmlHelper(new ViewDataDictionary(metadataProvider)); diff --git a/test/Microsoft.AspNetCore.Mvc.ViewFeatures.Test/Rendering/HtmlHelperListBoxExtensionsTest.cs b/test/Microsoft.AspNetCore.Mvc.ViewFeatures.Test/Rendering/HtmlHelperListBoxExtensionsTest.cs index 92c8fe0896..d5277ae2bd 100644 --- a/test/Microsoft.AspNetCore.Mvc.ViewFeatures.Test/Rendering/HtmlHelperListBoxExtensionsTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.ViewFeatures.Test/Rendering/HtmlHelperListBoxExtensionsTest.cs @@ -15,10 +15,10 @@ namespace Microsoft.AspNetCore.Mvc.Core { private static readonly List BasicSelectList = new List { - new SelectListItem { Text = "Zero", Value = "0"}, - new SelectListItem { Text = "One", Value = "1"}, - new SelectListItem { Text = "Two", Value = "2"}, - new SelectListItem { Text = "Three", Value = "3"}, + new SelectListItem("Zero", "0"), + new SelectListItem("One", "1"), + new SelectListItem("Two", "2"), + new SelectListItem("Three", "3"), }; [Fact] @@ -54,8 +54,8 @@ namespace Microsoft.AspNetCore.Mvc.Core ""; var selectList = new List { - new SelectListItem { Text = "Four", Value = "4" }, - new SelectListItem { Text = "Five", Value = "5" }, + new SelectListItem("Four", "4"), + new SelectListItem("Five", "5"), }; var metadataProvider = new EmptyModelMetadataProvider(); var helper = DefaultTemplatesUtilities.GetHtmlHelper(new ViewDataDictionary(metadataProvider)); @@ -79,8 +79,8 @@ namespace Microsoft.AspNetCore.Mvc.Core ""; var selectList = new List { - new SelectListItem { Text = "Four", Value = "4" }, - new SelectListItem { Text = "Five", Value = "5" }, + new SelectListItem("Four", "4"), + new SelectListItem("Five", "5"), }; var metadataProvider = new EmptyModelMetadataProvider(); var helper = DefaultTemplatesUtilities.GetHtmlHelper(new ViewDataDictionary(metadataProvider)); @@ -126,8 +126,8 @@ namespace Microsoft.AspNetCore.Mvc.Core ""; var selectList = new List { - new SelectListItem { Text = "Four", Value = "4" }, - new SelectListItem { Text = "Five", Value = "5" }, + new SelectListItem("Four", "4"), + new SelectListItem("Five", "5"), }; var metadataProvider = new EmptyModelMetadataProvider(); var helper = DefaultTemplatesUtilities.GetHtmlHelper(new ViewDataDictionary(metadataProvider)); @@ -151,8 +151,8 @@ namespace Microsoft.AspNetCore.Mvc.Core ""; var selectList = new List { - new SelectListItem { Text = "Four", Value = "4" }, - new SelectListItem { Text = "Five", Value = "5" }, + new SelectListItem("Four", "4"), + new SelectListItem("Five", "5"), }; var metadataProvider = new EmptyModelMetadataProvider(); var helper = DefaultTemplatesUtilities.GetHtmlHelper(new ViewDataDictionary(metadataProvider)); diff --git a/test/Microsoft.AspNetCore.Mvc.ViewFeatures.Test/Rendering/HtmlHelperSelectTest.cs b/test/Microsoft.AspNetCore.Mvc.ViewFeatures.Test/Rendering/HtmlHelperSelectTest.cs index 73c7692cda..9a0d279ffe 100644 --- a/test/Microsoft.AspNetCore.Mvc.ViewFeatures.Test/Rendering/HtmlHelperSelectTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.ViewFeatures.Test/Rendering/HtmlHelperSelectTest.cs @@ -31,38 +31,38 @@ namespace Microsoft.AspNetCore.Mvc.Rendering private static readonly List BasicSelectList = new List { - new SelectListItem { Text = "Zero", Value = "0"}, - new SelectListItem { Text = "One", Value = "1"}, - new SelectListItem { Text = "Two", Value = "2"}, - new SelectListItem { Text = "Three", Value = "3"}, + new SelectListItem("Zero", "0"), + new SelectListItem("One", "1"), + new SelectListItem("Two", "2"), + new SelectListItem("Three", "3"), }; private static readonly List SomeDisabledOneSelectedSelectList = new List { - new SelectListItem { Disabled = false, Selected = false, Text = "Zero", Value = "0"}, - new SelectListItem { Disabled = true, Selected = true, Text = "One", Value = "1"}, - new SelectListItem { Disabled = false, Selected = false, Text = "Two", Value = "2"}, - new SelectListItem { Disabled = true, Selected = false, Text = "Three", Value = "3"}, + new SelectListItem("Zero", "0", false, false), + new SelectListItem("One", "1", true, true), + new SelectListItem("Two", "2", false, false), + new SelectListItem("Three", "3", false, true), }; private static readonly List SomeGroupedSomeSelectedSelectList = new List { - new SelectListItem { Group = GroupOne, Selected = true, Text = "Zero", Value = "0"}, - new SelectListItem { Group = GroupTwo, Selected = false, Text = "One", Value = "1"}, - new SelectListItem { Group = GroupOne, Selected = true, Text = "Two", Value = "2"}, - new SelectListItem { Group = null, Selected = false, Text = "Three", Value = "3"}, + new SelectListItem("Zero", "0", true) { Group = GroupOne }, + new SelectListItem("One", "1", false) { Group = GroupTwo }, + new SelectListItem("Two", "2", true) { Group = GroupOne }, + new SelectListItem("Three", "3", false) { Group = null }, }; private static readonly List OneGroupSomeSelectedSelectList = new List { - new SelectListItem { Group = GroupOne, Selected = true, Text = "Zero", Value = "0"}, - new SelectListItem { Group = GroupOne, Selected = true, Text = "One", Value = "1"}, - new SelectListItem { Group = GroupOne, Selected = false, Text = "Two", Value = "2"}, - new SelectListItem { Group = GroupOne, Selected = false, Text = "Three", Value = "3"}, + new SelectListItem("Zero", "0", true) { Group = GroupOne }, + new SelectListItem("One", "1", true) { Group = GroupOne }, + new SelectListItem("Two", "2", false) { Group = GroupOne }, + new SelectListItem("Three", "3", false) { Group = GroupOne }, }; private static readonly List OneDisabledGroupAllSelectedSelectList = new List { - new SelectListItem { Group = DisabledGroup, Selected = true, Text = "Zero", Value = "0"}, - new SelectListItem { Group = DisabledGroup, Selected = true, Text = "One", Value = "1"}, - new SelectListItem { Group = DisabledGroup, Selected = true, Text = "Two", Value = "2"}, - new SelectListItem { Group = DisabledGroup, Selected = true, Text = "Three", Value = "3"}, + new SelectListItem("Zero", "0", true) { Group = DisabledGroup }, + new SelectListItem("One", "1", true) { Group = DisabledGroup }, + new SelectListItem("Two", "2", true) { Group = DisabledGroup }, + new SelectListItem("Three", "3", true) { Group = DisabledGroup }, }; private static readonly List SourcesSelectList = new List {