Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>I just write a extensions for do this, see it:</p> <hr> <pre><code>using System.Collections.Generic; using System.Linq; using System.Text; using System.Web.Routing; namespace System.Web.Mvc.Html { public static class GroupDropListExtensions { public static string GroupDropList(this HtmlHelper helper, string name, IEnumerable&lt;GroupDropListItem&gt; data, string SelectedValue, object htmlAttributes) { if (data == null &amp;&amp; helper.ViewData != null) data = helper.ViewData.Eval(name) as IEnumerable&lt;GroupDropListItem&gt;; if (data == null) return string.Empty; var select = new TagBuilder("select"); if (htmlAttributes != null) select.MergeAttributes(new RouteValueDictionary(htmlAttributes)); select.GenerateId(name); var optgroupHtml = new StringBuilder(); var groups = data.ToList(); foreach (var group in data) { var groupTag = new TagBuilder("optgroup"); groupTag.Attributes.Add("label", helper.Encode( group.Name)); var optHtml = new StringBuilder(); foreach (var item in group.Items) { var option = new TagBuilder("option"); option.Attributes.Add("value", helper.Encode(item.Value)); if (SelectedValue != null &amp;&amp; item.Value == SelectedValue) option.Attributes.Add("selected", "selected"); option.InnerHtml = helper.Encode(item.Text); optHtml.AppendLine(option.ToString(TagRenderMode.Normal)); } groupTag.InnerHtml = optHtml.ToString(); optgroupHtml.AppendLine(groupTag.ToString(TagRenderMode.Normal)); } select.InnerHtml = optgroupHtml.ToString(); return select.ToString(TagRenderMode.Normal); } } public class GroupDropListItem { public string Name { get; set; } public List&lt;OptionItem&gt; Items { get; set; } } public class OptionItem { public string Text { get; set; } public string Value { get; set; } } } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload