我是MVC的新手,在我的项目中使用了kendo ui网格。我提出了一个我得到的问题" null"在控制器参数中,尽管数据正在通过视图。请参阅以下代码。
以下是我在View
中的代码部分@model IEnumerable<WeBOC.Support.Entities.Vessel>
@{
ViewBag.Title = "Vessels";
}
<h2>Vessels</h2>
@(Html.Kendo().Grid(Model)
.Name("Grid")
.Columns(column =>
{
column.Bound(c => c.VIRNbr).Width(100).ClientTemplate(@Html.ActionLink("#=VIRNbr#", "VesselInspector", new { id = "#=VesselVisitId#" }).ToHtmlString()).Title("VIR No.").Width(150);
column.Bound(c => c.VesselName).Width(150).Title("Vessel Name");
column.Bound(c => c.InboundVoyageNbr).Width(70).Title("IB Vyg");
column.Bound(c => c.OutboundVoyageNbr).Width(70).Title("OB Vyg");
column.Bound(c => c.ETA).Width(100).Title("ETA").Format("{0:dd/MM/yyyy HH:mm}");
column.Bound(c => c.ArrivalDate).Width(100).Title("ATA").Format("{0:dd/MM/yyyy HH:mm}");
})
.Groupable()
.Sortable()
.Pageable()
.Filterable()
.DataSource(datasource => datasource
.Ajax()
.ServerOperation(true)
.PageSize(20)
.Read(read => read
.Action("Vessels_Read", "VesselVisit", new { id = "\\#=State\\#"})
))
)
这是控制器方法
public ActionResult Vessels_Read([DataSourceRequest] DataSourceRequest request, string id)
{
return Json(GetVessels(id).ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
}
为什么我在参数ID中获取null,尽管通过视图传递。
public ActionResult Vessels(string id)
{
return View(GetVessels(id));
}
public IEnumerable<Vessel> GetVessels(string phase)
{
IEnumerable<Vessel> vsl = null;
vsl = this._repository.GetVesselByPhase(phase);
return vsl;
}
任何帮助将不胜感激。
谢谢, Ovais
答案 0 :(得分:0)
如果您想将其他参数传递给您的操作,您应该执行以下操作:
.DataSource( dataSource => dataSource
.Ajax()
.Read( "Vessels_Read", "VesselVisit" ).Data("getState") //getState is a javascript function
)
然后添加一个脚本块:
<script>
function getState() {
return {
ID: // your ID, obtained with jQuery, from the View Model, hardcoded, etc...
};
}
</script>
更多信息here。
修改强>
我现在有这个工作。我正在使用View Model,但它应该没有任何不同。
查看:
.DataSource( dataSource => dataSource
.Ajax()
.Read( "MY_ACTION", "MY_CONTROLLER", new { Id = Model.Id } )
)
控制器:
[HttpPost]
public ActionResult MY_ACTION( [DataSourceRequest] DataSourceRequest request, long Id )
即使我将new { Id = Model.Id }
更改为new { Id = "QWERTY" }
且操作参数更改为字符串,我也会收到"QUERTY"
作为值。