2012-01-10 59 views
5

我无法理解如何将集合呈现为下拉列表。fubumvc - 将集合呈现为下拉列表

如果我有这样一个模型:

public class AccountViewModel {    

    public string[] Country { get; set; } 
} 

我想的串的集合呈现为一个下拉列表中。

使用html页面助手InputFor似乎不起作用。它只是渲染一个文本框。

我注意到InputFor可以反映属性类型并相应地呈现html。 (就像一个布尔字段的复选框)。

我还注意到FubuPageExtensions具有CheckBoxFor和TextBoxFor的方法,但没有任何等效于DropDownListFor的方法。

我可能在理解fubu中的html约定时忽略了一些基本的东西。

我是否需要自己构建select标签?如果是这样,那么推荐的方法是什么?

回答

10

你是对的,(在我上次查看的时候)没有FubuMVC.Core HTML扩展方法来生成选择标签,尽管你可以使用HtmlTags library来通过代码生成选择标签。

正如你在你的问题中所谈到的,攻击这种方法的正确方法很可能是HTML规范与HtmlTags库一起使用,如FubuMVC.Recipes示例的src/UI/HtmlConventionsWithPageExtensions中所示。

例如枚举一代例子可能是:

this.Editors 
    .If(e => e.Accessor.PropertyType.IsEnum) 
    .BuildBy(er => 
    { 
     var tag = new HtmlTag("select"); 
     var enumValues = Enum.GetValues(er.Accessor.PropertyType); 
     foreach (var enumValue in enumValues) 
     { 
      tag.Children.Add(new HtmlTag("option").Text(enumValue.ToString())); 
     } 

     return tag; 
    }); 

的FubuMVC.Recipes库是相当新的,还在不断增加,从而有可能是周围的一些更好的例子,但希望这给你一些想法。