【发布时间】:2016-05-11 13:36:02
【问题描述】:
我正在使用 Kendo UI Grid 并尝试在我的视图模型中绑定到 List<T>。不幸的是,我在Model.DeliveredLoads 上不断收到NullReferenceException。我在控制器中设置了断点,在调试时,控制器方法没有被加载,断点也没有被命中。
看起来好像网格在视图模型中可用数据之前尝试绑定,因此出现错误。
这是我的 ViewModel.cs 文件中的内容:
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);
}
最后,我的观点:
@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>
由于我将数据放入视图模型(并且没有预料到大量数据 - 通常不超过 30 行),我不明白为什么需要 Json 方法来加载/页面/排序数据。
我只是不明白为什么网格似乎在模型完全水合之前试图绑定。
任何想法或建议将不胜感激!
谢谢, 瑞克
【问题讨论】:
标签: asp.net-mvc razor data-binding kendo-grid asp.net-mvc-viewmodel