2013-12-12 4 views
2

У меня есть форма, в которой у меня есть три частичных вида и одна сетка, поэтому для всех этих 4 существует 4 разных видаМодель используется. Теперь, согласно Моему пониманию, будет один более ViewModel, который включает в себя все 4 ViewModel, и из которых один будет IEnumarable, который будет использоваться Grid.более одной ViewModel на той же странице в MVC

Моего код выглядит следующим образом:

@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, который используется для отображения сетки Только но есть еще 3 ViewModel для завершения заполнения этого частичного вида.

ответ

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) 
+0

Элемент модели, переданный в словарь, имеет тип «System.Collections.Generic.List'1 [Invoice.Models.Vie wModels.Setup.AccountViewModel] ', но для этого словаря требуется элемент модели типа «Invoice.Models.ViewModels.Setup.OverAllViewModel». – SantyEssac

+0

все еще получает эту ошибку, и я включил модель следующим образом в верхней части View @model Invoice.Models.ViewModels.Setup.OverAllViewModel – SantyEssac

+1

Попробуйте использовать ключевое слово 'Virtual', где бы вы ни находились,' IEnumerable'. Я отредактировал сообщение выше. Проверьте и сообщите нам, если вы все еще получаете эту ошибку. –

Смежные вопросы