【问题标题】:Why foreach returns one row inside extension method?为什么 foreach 在扩展方法中返回一行?
【发布时间】:2013-04-24 13:46:01
【问题描述】:

为什么 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));
}

【问题讨论】:

    标签: asp.net-mvc razor foreach extension-methods asp.net-mvc-helpers


    【解决方案1】:

    因为在循环内部你正在覆盖它

    你可以使用

       Attributes.Add (key, value) 
    

    【讨论】:

      猜你喜欢
      • 2011-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多