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;
        }