使用一行渲染对象属性

时间:2012-08-07 20:44:02

标签: c# asp.net-mvc-3

如何在一行内的复选框中显示每个属性 我有具有许多属性的对象功能,这些属性是动态分配的,我不想在视图中对这些属性进行硬编码。 所以,现在我有类似这样的东西

@Html.CheckBoxFor(model => model.Features.IsRegistered, new { @disabled = "disabled" })
@Html.CheckBoxFor(model => model.Features.IsPhone, new { @disabled = "disabled" 

....还有更多

如何完全像上面这些渲染但是对于所有对象属性,这可能吗? 感谢

1 个答案:

答案 0 :(得分:0)

我只对此进行了一些有限的测试,但这里是您可以使用的扩展方法的基本实现:

public static class HtmlHelperExtensions
{
    public static MvcHtmlString CheckBoxesForModel(this HtmlHelper helper,
        object model)
    {
        if (model == null)
            throw new ArgumentNullException("'model' is null");

        return CheckBoxesForModel(helper, model.GetType());
    }

    public static MvcHtmlString CheckBoxesForModel(this HtmlHelper helper,
        Type modelType)
    {
        if (modelType == null)
            throw new ArgumentNullException("'modelType' is null");

        string output = string.Empty;
        var properties = modelType.GetProperties(BindingFlags.Instance | BindingFlags.Public);

        foreach (var property in properties)
            output += helper.CheckBox(property.Name, new { @disabled = "disabled" });

        return MvcHtmlString.Create(output);
    }
}

你可能希望扩展它以允许它也采用HTML属性,而不是对它们进行硬编码,但这应该可以让你开始。