public IHtmlNode HiddenInputTag() { IHtmlNode input = new HtmlElement("input", TagRenderMode.SelfClosing) .Attributes(new { type = "text", style = "display:none" }); string value = string.Empty; if (Component.Items.Any()) { value = Component.GetValue<string>(Component.Value); if (string.IsNullOrEmpty(value) && Component.SelectedIndex != -1) { DropDownItem selectedItem = Component.Items[Component.SelectedIndex]; value = selectedItem.Value.HasValue() ? selectedItem.Value : selectedItem.Text; } } else if (Component.Name.HasValue() && Component.ViewContext.ViewData.ModelState.ContainsKey(Component.Name)) { value = Component.GetValue<string>(null); } if (Component.Name.HasValue()) { string name = Component.GetName(string.Empty); input.Attributes(Component.GetUnobtrusiveValidationAttributes()) .Attributes(new { id = Component.Id, name = name }); } input.ToggleAttribute("value", value, value.HasValue()) .Attributes(Component.HiddenInputHtmlAttributes); return input; }