1

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

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

.... 还有很多

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

4

1 回答 1

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 属性,而不是对它们进行硬编码,但这应该可以帮助您入门。

于 2012-08-07T21:20:59.693 回答