Ich arbeite mit dem Kendo UI Grid und versuche, an eine List<T>
in meinem View Model zu binden. Leider erhalte ich ständig eine NullReferenceException
auf Model.DeliveredLoads
. Ich habe einen Haltepunkt in meinem Controller gesetzt, und beim Debuggen wird weder die Controller-Methode geladen, noch wird der Breakpoint getroffen.Kendo UI MVC Grid ViewModel Binding NullReference
Es scheint, als ob das Gitter versucht, zu binden, bevor die Daten im View-Modell verfügbar sind, daher der Fehler.
Hier ist, was ich in meiner ViewModel.cs Datei:
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; }
}
}
Mein Controller-Aktion:
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);
}
Und schließlich meine Ansicht:
@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>
Da ich Wenn ich die Daten in das Ansichtsmodell lege (und nicht große Datenmengen vorwegnehme - im Allgemeinen nicht mehr als 30 Zeilen), sehe ich nicht, warum Ich brauche keine JSON-Methode, um die Daten zu laden/seiten/sortieren.
Ich verstehe einfach nicht, warum das Gitter versucht zu binden, bevor das Modell vollständig hydratisiert ist.
Alle Ideen oder Vorschläge würden sehr geschätzt werden!
Danke, Ric