Динамически отображать поле в два столбца - PullRequest
1 голос
/ 08 марта 2020

Есть идеи для динамического отображения элемента label и input в двух столбцах вместо одного столбца?

Не удалось объединить его с foreach

введите описание изображения здесь

<div class="col-sm-12">
@foreach (var group in side)
{
    <div class="panel panel-default">
        <div class="panel-body">
            <h4>
                @group.Key
            </h4>
            @foreach (ModelMetadata col in group)
            {
                if (MetaDataHelper.GetPropertyAttribute<ActiveUiHint>(col) == null || MetaDataHelper.GetPropertyAttribute<ActiveUiHint>(col).DisplayType ==                                         ActiveUiHint.ProperyDisplayType.Field)
                {
                    <div class="form-group">
                        @Html.Label(col.PropertyName, htmlAttributes: new { @class = "control-label col-md-2" })
                        <div class="col-md-3">
                            @if (!col.IsReadOnly)
                            {
                                @Html.Editor(col.PropertyName, new { htmlAttributes = new { @class = "form-control" } })
                            }
                            else
                            {
                                @Html.Display(col.PropertyName, new { htmlAttributes = new { @class = "form-control" } })
                            }
                            @Html.ValidationMessage(col.PropertyName, "", new { @class = "text-danger" })
                        </div>
                    </div>
                }
                else
                {
                    @Html.Editor(col.PropertyName, new { htmlAttributes = new { @class = "form-control" } })
                }
            }
        </div>
    </div>
}

1 Ответ

0 голосов
/ 08 марта 2020

Попробуйте: -

<div class="col-sm-12">
@foreach (var group in side)
{
    <div class="panel panel-default">
        <div class="panel-body">
            <h4>
                @group.Key
            </h4>
 @foreach (var obj in group.Select((item, index) => new {item, index}))
    {
       var col=obj.item;
       if(obj.index==0 ||obj.index%2==0){ @Html.Raw("<div class='row'>") }

        <div class='col-md-6'>
          if (MetaDataHelper.GetPropertyAttribute<ActiveUiHint>(col) == null || MetaDataHelper.GetPropertyAttribute<ActiveUiHint>(col).DisplayType == ActiveUiHint.ProperyDisplayType.Field)
                {
                    <div class="form-group">
                        @Html.Label(col.PropertyName, htmlAttributes: new { @class = "control-label col-md-2" })
                        <div class="col-md-3">
                            @if (!col.IsReadOnly)
                            {
                                @Html.Editor(col.PropertyName, new { htmlAttributes = new { @class = "form-control" } })
                            }
                            else
                            {
                                @Html.Display(col.PropertyName, new { htmlAttributes = new { @class = "form-control" } })
                            }
                            @Html.ValidationMessage(col.PropertyName, "", new { @class = "text-danger" })
                        </div>
                    </div>
                }
                else
                {
                    @Html.Editor(col.PropertyName, new { htmlAttributes = new { @class = "form-control" } })
                }
            </div>

         if ((obj.index!=0 && (obj.index%2!=0 ||group.Count == obj.index + 1))
         ||(obj.index==0 && group.Count==1))
         {
           @Html.Raw("</div>")
         }
    }

        </div>
    </div>
}
</div>
...