Почему foreach возвращает одну строку внутри метода расширения?

Почему foreach возвращает одну строку внутри метода расширения? Эти коды выполняются правильно внутри обычного метода. Какова может быть причина для возврата одного столбца?

public static MvcHtmlString DropDownWithOpt(this HtmlHelper html)
{
    IList<Countries> c = new List<Countries>
    {
        new Countries{ Country = "Georgia", Cities = new List<Cities>
        {
         new Cities{ City="Batumi"},
         new Cities{ City="Tbilisi"},
         new Cities{ City="Zugdidi"}
        }},
        new Countries{ Country = "Turkey", Cities = new List<Cities>
        {
         new Cities{ City="Istanbul"},
         new Cities{ City="Ankara"}
        }}
    };

    var select = new TagBuilder("select");
    var group = new TagBuilder("optgroup");
    var option = new TagBuilder("option");

    foreach (var item in c)
    {

        group.Attributes["label"] = item.Country;
        foreach (var ci in item.Cities)
        {
            option.Attributes["value"] = ci.City.ToString();
            option.SetInnerText(ci.City);
        }
    }
    select.InnerHtml = group.ToString(TagRenderMode.SelfClosing) + option.ToString();
    return MvcHtmlString.Create(select.ToString(TagRenderMode.Normal));
}

1 ответ

Потому что внутри цикла вы перезаписываете его

вы можете использовать

   Attributes.Add (key, value) 
Другие вопросы по тегам