用一行呈现对象属性

本文关键字:对象 属性 一行 | 更新日期: 2024-11-08 08:26:20

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

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

....等等

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

用一行呈现对象属性

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

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