0

私は剣道UIグリッドで作業しており、ビューモデルでList<T>にバインドしようとしています。残念ながら、私は継続してNullReferenceExceptionModel.DeliveredLoadsに受け取ります。私はコントローラにブレークポイントを設定しており、デバッグ時にはコントローラメソッドがロードされておらず、ブレークポイントもヒットしません。剣道UI MVCグリッドビューモデルバインドNullReference

グリッドは、データがビューモデルで利用可能になる前にバインドしようとしているように見えます。つまり、エラーです。私は「ので

@model SmartAppV1.Models.DispatchBoardViewModel 

<div class="section group"> 
    <div id="col4" class="col span_1_of_4 fullContainerHeight"> 
     <div class="commandBar"> 
      <i class="fa fa-expand fa-inverse floatRight clickPointer" onclick="expandColumn(this);"></i> 
     </div> 
     @(Html.Kendo().Grid(Model.DeliveredLoads) 
      .Name("Grid_4_of_4") 
      .Columns(columns => 
      { 
       columns.Bound(p => p.LoadId).Title("Load Id"); 
      }) 
      .Pageable() 
      ) 
     ) 
    </div> 
</div> 

using System.Collections.Generic; 
using SmartAppData; 
using SmartAppData.Services; 

namespace SmartAppV1.Models 
{ 
    public class DispatchBoardViewModel 
    { 
     public List<OrdHeader> OrderHeaders 
     { 
      get 
      { 
       var service = new OrderService(); 
       var orders = service.GetOrders(); 
       return (List<OrdHeader>)orders; 
      } 
     } 
     public OrderTmsStatus OrderTmsStatus => new OrderTmsStatus(); 

     private string _defaultOrderTmsStatus; 
     public string DefaultOrderTmsStatus 
     { 
      get { return OrderTmsStatus.Planned.ToString(); } 
      set { _defaultOrderTmsStatus = value; } 
     } 

     public List<Load> DeliveredLoads { get; set; } 

    } 
} 

私のコントローラのアクション:

public ActionResult DispatchBoard() 
{ 
    var service = new OrderService(); 
    var loadService = new LoadService(); 

    var viewModel = new DispatchBoardViewModel(); 
    viewModel.DefaultOrderTmsStatus = OrderTmsStatus.New.ToString(); 

    // Get list of delivered loads (grid #4) 
    viewModel.DeliveredLoads = loadService.GetLoadsByBookedByIdByTmsStatus(110, LoadTmsStatus.Delivered.ToString()); 

    return View(viewModel); 
} 

そして、最後に、私の見解

は、ここで私は私のViewModel.csファイルに持っているものですmビューモデルにデータを入れる(大量のデータを予測しない - 一般的には30行以下)データをロード/ページ/ソートするためのJsonメソッドの必要性があります。

モデルが完全に水和される前にグリッドが結合しようとしているように見える理由はわかりません。

ご意見やご提案をいただければ幸いです。

おかげで、 リック

答えて

0

それはそのように動作しません。グリッドを初期化している間、グリッドはモデル 'Model.DeliveredLoads'を使用していると言います。モデルバインドのためのものです。その時点ではデータはありません。グリッドの読み込みメソッドを呼び出す必要があります。次に、コントローラからの読み取り方法からデータを読み取ることを意味します。

@model SmartAppV1.Models.DispatchBoardViewModel 

<div class="section group"> 
<div id="col4" class="col span_1_of_4 fullContainerHeight"> 
    <div class="commandBar"> 
     <i class="fa fa-expand fa-inverse floatRight clickPointer" onclick="expandColumn(this);"></i> 
    </div> 
    @(Html.Kendo().Grid(Model.DeliveredLoads) 
     .Name("Grid_4_of_4") 
     .Columns(columns => 
     { 
      columns.Bound(p => p.LoadId).Title("Load Id"); 
     }) 
     .Pageable() 
     .DataSource(dataSource => dataSource.Ajax().Read(read => read.Action("ActionName", "ControllerName"))) 
     ) 

</div> 

関連する問題