我有一个表单,其中我有三个部分视图和一个网格,所以这4个有4个不同的ViewModel正在使用。现在我的理解还会有一个ViewModel包含所有4个ViewModel和其中一个是Grid可以使用的IEnumarable。
我的代码如下:
@model IEnumerable<Invoice.Models.ViewModels.Setup.AccountViewModel>
@{
ViewBag.Title = "Account";
Layout = "~/Views/Shared/_LayoutGrid.cshtml";
}
@(Html.Kendo().Grid(Model)
.Name("Account")
.Columns(columns =>
{
columns.Bound(p => p.AccountType).Title("Account Type").Width(250);
columns.Bound(p => p.AccountName).Title("Account Name").Width(300);
columns.Bound(p => p.Currency).Title("Currency").Width(120);
columns.Bound(p => p.Status).ClientTemplate("#=data.Status#").Width(150);
})
.ToolBar(toolbar =>
{
toolbar.Template(@<text>
<div class="row-fluid">
<div class="span1">
<div class="toolbar" style="height:25px;">
<ul id="menu" style="width:38px; margin-left:22px;" class="span6">
<li style="width:36px;">
<i class="fa fa-plus"></i>
<ul>
@foreach (var account in @ViewBag.AccountType)
{
<li style="width:100px;" class="openid">
@if(@account.Value=="Bank")
{
<label id="Bank1">@account.Value</label>
}
@if(@account.Value=="CreditCard")
{
<label id="Credit">@account.Value</label>
}
@if(@account.Value=="Cash")
{
<label id="Cash1">@account.Value</label>
}
</li>
}
</ul>
</li>
</ul>
</div>
</div>
</div>
</text>);
})
<div id="Bank">
@Html.Partial("_BankDetails")
</div>
<div id="Cash">
@Html.Partial("_CashDetails")
</div>
<div id="Credit">
@Html.Partial("_CreditCardDetails")
</div>
在这里您可以看到我正在使用AccountViewModel来显示Grid Only,但还有3个ViewModel用于提交这些部分视图。
答案 0 :(得分:3)
您可以创建一个视图模型,它结合了您需要的4个视图模型:
public class FullAcountModel
{
public IEnumerable<AccountViewModel> Accounts { get; set; }
public CashDetails CashDetails { get; set; }
public BankDetails BankDetails { get; set; }
public CreditCardDetails CreditCardDetails { get; set; }
}
使用此模型,您可以像这样创建网格:
@(Html.Kendo().Grid(Model.Accounts)
这样的偏见:
@Html.Partial("_BankDetails", Model.BankDetails)