我有这样的观点:
@model MySearchVM
//Filters
...
@Html.TextBoxFor(model => model.Description)
@Html.TextBoxFor(model => model.Letter)
...
//Grid
@(Html.Kendo().Grid<MyGridVM>()
.Name("MyGrid")
.Columns(columns =>
{
columns.Bound(p => p.Id).Hidden(true);
columns.Bound(p => p.Description);
columns.Bound(p => p.Letter);
})
.Groupable()
.Pageable()
.Sortable()
.Scrollable()
.DataSource(dataSource => dataSource
.Ajax()
.Read(read => read.Action("_Read", "MyController"))
.Model(model => model.Id(p => p.Id)))
)
我的控制器:
public ActionResult _Read([DataSourceRequest] DataSourceRequest request)
{
var list = repository.GetAll().Select(x => new MyGridVM()
{
Id = x.Id,
Description = x.Description,
Letter = x.Letter,
});
return Json(list.ToDataSourceResult(request));
}
一切都很棒...但我想在_Read动作中访问我的ViewModel,所以我可以手动过滤结果......
我试图传递FormCollection,但只能从中获取:sort,page,pageSize,group和filter
我该怎么做?
由于
答案 0 :(得分:1)
在action方法中将不会自动发送到服务器。我可以建议你在阅读配置的data函数的帮助下发送你需要的任何动作方法,以发送你需要的任何东西。
e.g。
.DataSource(dataSource => dataSource.Ajax()
.Read(read => read
.Action("Read", "Home")
.Data("additionalData")
)
)
// -- removed for brevity
<script>
function additionalData() {
return {
userID: 42,
search: $("#search").val()
};
}
</script>