В режиме бритвы, как я могу прокручивать различные IEnumerables в ViewModel и отображать их переменные в виде столбцов в одной строке?Вернуть viewmodel с IEnumerable для просмотра и использования бритвы для циклических переменных в одну строку
I Возвращает экземпляр ViewModel который заполняется с IEnumerables различных моделей в MVC зрения как так:
ViewModel:
namespace example.ViewModels
{
public class ClaimModel
{
public IEnumerable<Claim> Claims { get; set; }
public IEnumerable<Member> Members { get; set; }
public IEnumerable<ID> IDs { get; set; }
}
}
Мой контроллер, который возвращают вид выглядит следующим образом:
namespace example.Controllers
{
public class OfficeManagerController : Controller
{
private Entities db = new Entities(); //This is my database
public ActionResult Index()
{
IEnumerable<Member> member = db.Members.OrderByDescending(b => b.ClaimID);
IEnumerable<Claim> claim = db.Claims.OrderByDescending(b => b.ClaimID);
IEnumerable<ID> id = db.IDs;
ClaimModel model = new ClaimModel { IDs = id, Members = member, Claims = claim };
return View(model);
}
}
}
Вот отрывок из моей точки зрения бритвы, где я цикл через один из IEnumerables в моем ViewModel называемых Members
:
@model example.ViewModels.ClaimModel
<div class="table list-group ">
<div class="row table-bordered ">
<div class="pull-left col-xs-1 h5">
Claim ID:
</div>
<div class="pull-left col-xs-2 h5">
Member Name:
</div>
<div class="pull-left col-xs-2 h5">
Member ID:
</div>
</div>
@foreach (var item in Model.Members)
{
<div class="pull-left col-xs-1 h5">
@Html.DisplayFor(modelItem => item.ClaimID)
</div>
<div class="pull-left col-xs-2 ">
@Html.DisplayFor(modelItem => item.Name)
</div>
<div class="pull-left col-xs-2 ">
@Html.DisplayFor(modelItem => item.MemberID)
</div>
}
</div>
Это обычный способ петли через один из IEnumerables. Конечно, мне не нужен ViewModel для этого, потому что я мог бы просто передать мои члены IEnumerable прямо в мой взгляд.
Теперь, какую логику я должен применять для отображения данных из трех разных IEnumerables в столбцы одной и той же строки? Я предполагаю, что это возможно с бритвой.
мне нужно что-то вроде этого:
@model example.ViewModels.ClaimModel
<div class="table list-group ">
<div class="row table-bordered ">
<div class="pull-left col-xs-1 h5">
Member Name:
</div>
<div class="pull-left col-xs-2 h5">
Claim Name:
</div>
<div class="pull-left col-xs-2 h5">
ID Name:
</div>
</div>
@foreach (var item in Model.Members)
{
<div class="pull-left col-xs-1 h5">
@Html.DisplayFor(modelItem => item.Name)
</div>
}
@foreach (var item in Model.Claims)
{
<div class="pull-left col-xs-1 h5">
@Html.DisplayFor(modelItem => item.Name)
</div>
}
@foreach (var item in Model.IDs)
{
<div class="pull-left col-xs-1 h5">
@Html.DisplayFor(modelItem => item.Name)
</div>
}
Однако это не будет вставлять свои переменные в одних и те же строки, но стек все имена членов рядом друг с другом и так далее.
Здесь я добавлю комментарий, каждый Claim
имеет Member
и ID
. Claim
имеет первичный ключ ClaimID
и Member
и ID
относятся к нему с помощью внешних ключей, называемых ClaimID
.
Как эти модели связаны друг с другом? Вы хотите, чтобы первая строка отображала значения для первого «Претензии» и «Первый» и «Идентификатор»? Все ли коллекции одинаковой длины? –
Да, 'Claim' имеет' Member' и 'ID'. Претензия имеет первичный ключ с именем' ClaimID', а 'Member' и' ID' связаны с ним с помощью внешних ключей, называемых 'ClaimID'. – 6134548
Тогда вам будет намного лучше используя модель представления с одной коллекцией на свойство, которое объединяет данные. –