1

我有这样的看法:

@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,但只能从以下位置获得:排序、页面、pageSize、组和过滤器

我怎样才能做到这一点?

谢谢

4

1 回答 1

1

在 action 方法中没有任何东西会自动发送到服务器。我可以建议您在读取配置的数据功能的帮助下将您需要的任何内容发送到该操作方法,以发送您需要的任何内容。

例如

.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>
于 2013-09-09T19:41:24.227 回答