我无法理解如何将集合渲染为下拉列表。
如果我有一个类似的模型:
public class AccountViewModel {
public string[] Country { get; set; }
}
我希望将字符串集合呈现为下拉列表。
使用html页面帮助器InputFor似乎不起作用。它只是渲染一个文本框。
我注意到InputFor可以反映属性类型并相应地呈现html。 (就像布尔字段的复选框一样)。
我还注意到FubuPageExtensions有CheckBoxFor和TextBoxFor的方法,但没有任何东西等同于DropDownListFor。
在理解fubu中的html约定时,我可能遗漏了一些非常基础的东西。
我是否需要自己构建select标签?如果是这样,建议的方法是什么?
答案 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存储库是一个非常新的并且仍在增长,所以可能会有一些更好的示例,但希望这会给你一些想法。