Как передать данные сложного типа на Ajax-привязку - PullRequest
1 голос
/ 15 сентября 2011

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 Ответ

0 голосов
/ 16 сентября 2011

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

...