fubumvc - 将集合呈现为下拉列表

时间:2012-01-10 21:51:51

标签: c# fubumvc

我无法理解如何将集合渲染为下拉列表。

如果我有一个类似的模型:

public class AccountViewModel {             

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

我希望将字符串集合呈现为下拉列表。

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

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

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

在理解fubu中的html约定时,我可能遗漏了一些非常基础的东西。

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

1 个答案:

答案 0 :(得分: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存储库是一个非常新的并且仍在增长,所以可能会有一些更好的示例,但希望这会给你一些想法。