Как передать данные сложного типа на Ajax-привязку

Telerik ASP.NET MVC Q2 2011

У меня есть сетка, которая связана с Ajax:

@(Html.Telerik().Grid<IUser>()
                .Name("UsersGrid")
                .DataBinding(binding => binding.Ajax().Select("UsersGridSelect", "User", new { area = "Admin" }))
                .ClientEvents(events => events.OnDataBinding("onGridRefresh"))
     ...
     ...

Это мой обработчик onGridRefresh:

function onGridRefresh(e)
{
    var modelData =
    {
        Username:       $('#SearchModel_Username').val(),
        FirstName:      $('#SearchModel_FirstName').val(),
        LastName:       $('#SearchModel_LastName').val(),   
        IsLocked:       $('#SearchModel_IsLocked').is(':checked'),
        ClientId:       $('#SearchModel_ClientId').val(),
        UserCode:       $('#SearchModel_UserCode').val(),
        ExpireDateFrom: $('#SearchModel_ExpireDateFrom').val(),
        ExpireDateTo:   $('#SearchModel_ExpireDateTo').val()
    };

    e.data = { searchModel: modelData };
}

И это мой контроллер:

[GridAction]
public ActionResult UsersGridSelect(UserSearchModel searchModel)
{
    IList<IUser> userList = searchModel == null ? new List<IUser>() : _repository.GetUsers(searchModel);

    return View(new GridModel(userList));
}

Эта настройка не работает, я знаю... Но, по крайней мере, она показывает, что я после. Когда я передаю свои значения в качестве отдельного параметра, он работает:

public ActionResult UsersGridSelect(string Username, string Firstname, string LastName,....)

Но я бы предпочел передать его как объект. Есть ли способ сделать это?

1 ответ

Решение

Если вы используетеe.data = modelData это будет правильно связывать.

Другие вопросы по тегам