Hi y'all,
I'm having a strange issue with the DropDownListFor functionality. Whenever I use it on a property in my model, it is attaching data-val-required on the resultant html tag, even though the property is not required. This is posing a problem, because I want to use the optionLabel as a way of letting the user select a null value for that field. I double-checked to make sure it was just Kendo's control that was doing this by using the built-in Html.TextBoxFor with the same property, and it did not have the data-val-required put on the text input. Any help?
Here's the Model:
Here's the relevant part of the View:
Here's the resultant HTML:
I'm having a strange issue with the DropDownListFor functionality. Whenever I use it on a property in my model, it is attaching data-val-required on the resultant html tag, even though the property is not required. This is posing a problem, because I want to use the optionLabel as a way of letting the user select a null value for that field. I double-checked to make sure it was just Kendo's control that was doing this by using the built-in Html.TextBoxFor with the same property, and it did not have the data-val-required put on the text input. Any help?
Here's the Model:
public class ComponentGIEditViewModel { public int Id { get; set; } public string Name { get; set; } public string Description { get; set; } [Display(Name = "Toolset Reference Id")] public string ToolsetReferenceId { get; set; } [Display(Name = "BU Reference Id")] public string BUReferenceId { get; set; } [Display(Name = "Service Group")] public int ServiceGroupId { get; set; } public IEnumerable<dynamic> ServiceGroups { get; set; } [Display(Name="Component Type")] public int ComponentTypeId { get; set; } public IEnumerable<dynamic> ComponentTypes { get; set; } [Display(Name = "Criticality")] public int CriticalityId { get; set; } public IEnumerable<dynamic> Criticalities { get; set; } [Display(Name="Is Sox")] public string IsSOX { get; set; } [Display(Name = "Complexity")] public int ComplexityId { get; set; } public IEnumerable<dynamic> Complexities { get; set; } [Display(Name = "Trigger")] public int TriggerId { get; set; } public IEnumerable<dynamic> Triggers { get; set; } [Display(Name = "Data Classification")] public int DataClassificationId { get; set; } public IEnumerable<dynamic> DataClassifications { get; set; } }Here's the relevant part of the View:
@Html.LabelFor(model => model.ServiceGroupId, new { @class = "col-md-1 control-label" }) <div class="col-md-5"> @(Html.Kendo().DropDownListFor(model => model.ServiceGroupId) .BindTo(Model.ServiceGroups) .DataTextField("Name") .DataValueField("Id") .OptionLabel("-- None --") .HtmlAttributes(new { style = "width: 100%" }) ) </div>Here's the resultant HTML:
<span tabindex="0" class="k-widget k-dropdown k-header" role="listbox" aria-busy="false" aria-disabled="false" aria-expanded="false" aria-haspopup="true" aria-readonly="false" aria-activedescendant="ServiceGroupId_option_selected" aria-owns="ServiceGroupId_listbox" unselectable="on">
<span class="k-dropdown-wrap k-state-default" unselectable="on">
<span class="k-input" unselectable="on">Telecommunications</span>
<span class="k-select" unselectable="on">
<span class="k-icon k-i-arrow-s" unselectable="on">select</span></span></span>
<input name="ServiceGroupId" id="ServiceGroupId" style="display: none;" type="text" value="437" data-val-required="The Service Group field is required." data-val-number="The field Service Group must be a number." data-val="true" data-role="dropdownlist"></span>
<script> jQuery(function(){jQuery("#ServiceGroupId").kendoDropDownList({"dataSource":[{"Id":437,"Name":"Telecommunications"},{"Id":438,"Name":"UGIS - Alaska - Technical/Business"},{"Id":439,"Name":"UGIS - AP - Technical - Australia"},{"Id":440,"Name":"UGIS - Canada - Business"},{"Id":441,"Name":"UGIS - Canada - Technical"},{"Id":442,"Name":"UGIS - Europe \u0026 W Africa - Technical - Norway"},{"Id":443,"Name":"UGIS - L48 - TIS"},{"Id":394,"Name":"CGIS - Risk Management - Price Feeds"},{"Id":395,"Name":"Common Operating Environment (Client and Server)"},{"Id":396,"Name":"Corporate Records Management - Core"},{"Id":397,"Name":"CSGIS - Corporate Staffs GIS Admin"},{"Id":398,"Name":"CSGIS - GFS - Treasury Services"},{"Id":399,"Name":"CSGIS - GRFS"},{"Id":400,"Name":"CSGIS - HR - Medical"},{"Id":401,"Name":"CSGIS - HR - NA Leveraged Service Center"},{"Id":402,"Name":"CSGIS - HSE - Admin"},{"Id":403,"Name":"CSGIS - HSE - Risk Mgmt"},{"Id":404,"Name":"CSGIS - Legal"},{"Id":405,"Name":"CSGIS - Political Action Committee"},{"Id":406,"Name":"CSGIS - T\u0026MP - Global Procurement Services"},{"Id":407,"Name":"CSGIS - Tax"},{"Id":408,"Name":"DGIS - Germany"},{"Id":409,"Name":"DGIS - Mkt Leveraged Svc Retail Svc - JetLink"},{"Id":410,"Name":"DGIS - Mkt Leveraged Svc Retail Svc - LOPS"},{"Id":411,"Name":"DGIS - Mkt Leveraged Svc Retail Svc - R\u0026M"},{"Id":412,"Name":"DGIS - Mkt Leveraged Svc Retail Svc - RSI"},{"Id":413,"Name":"DGIS - Mkt Leveraged Svc Retail Svc - SKPI"},{"Id":414,"Name":"DGIS - Mkt Leveraged Svc S\u0026T Svc - iCAST"},{"Id":415,"Name":"DGIS - Mkt Leveraged Svc S\u0026T Svc - Medata"},{"Id":416,"Name":"DGIS - Mkt Leveraged Svc S\u0026T Svc - TAS"},{"Id":417,"Name":"DGIS - Retail Marketing"},{"Id":418,"Name":"DGIS - Specialties - Lubes Finished"},{"Id":419,"Name":"DGIS - Specialties - Solvents"},{"Id":420,"Name":"DGIS - US Refining \u0026 Tehnology - Leveraged"},{"Id":421,"Name":"DGIS - US Refining Direct - Bayway"},{"Id":422,"Name":"DGIS - US Refining Direct - LA"},{"Id":423,"Name":"DGIS - US Refining Direct - Lake Charles"},{"Id":424,"Name":"DGIS - US Refining Direct - LC"},{"Id":425,"Name":"DGIS - US Refining Direct - Rodeo"},{"Id":426,"Name":"DGIS - US Refining Direct - WoodRiver"},{"Id":427,"Name":"DGIS - Warwick"},{"Id":428,"Name":"DGIS - Wholesale Marketing"},{"Id":429,"Name":"DGIS -Transportation - Marine"},{"Id":430,"Name":"DGIS -Transportation - PL\u0026TRM"},{"Id":431,"Name":"DGIS -Transportation - Trk\u0026RL"},{"Id":432,"Name":"Financial Consolidation Service"},{"Id":433,"Name":"Global SAP - Production Support - Core Modules"},{"Id":434,"Name":"Land Information Services (Tobin)"},{"Id":435,"Name":"Performance Services"},{"Id":436,"Name":"Prod, Rev, Reg \u0026 Accting Solutions (Novistar)"},{"Id":390,"Name":"CGIS - Crude \u0026 Products - Americas Crude Systems"},{"Id":391,"Name":"CGIS - Crude \u0026 Products - STAR"},{"Id":392,"Name":"CGIS - Gas \u0026 Power"},{"Id":393,"Name":"CGIS - Risk Management - Non-Price Feeds"}],"dataTextField":"Name","autoBind":false,"dataValueField":"Id","optionLabel":"-- None --"});});</script>