Kendo UI Grid в MVC — как вернуть выбранный элемент строки в контроллер

У меня есть приложение MVC 4 с сеткой Kendo UI, которое я использую для управления пользователями. Я отображаю информацию о пользователях в сетке и имею настраиваемую командную кнопку, при нажатии которой открывается новая страница для редактирования информации о пользователях. По разным причинам (одна из которых заключается в том, что слишком много информации для редактирования для отображения в сетке) мне нужно редактировать пользователей на новой странице, а не с помощью встроенного или всплывающего или встроенного редактирования. Моя сетка выглядит так... очень просто

@(Html.Kendo().Grid<WebSiteNew.Models.ManageUsersViewModel>()
.Name("grid")
.HtmlAttributes(new { style = "margin-top: 5px" })
.Columns(c =>
{
    c.Bound(model => model.UserName);
    c.Bound(model => model.FirstName);
    c.Bound(model => model.LastName);
    c.Bound(model => model.Email);
    c.Bound(model => model.Phone);
    c.Bound(model => model.Extension);
    c.Bound(model => model.JobTitle);
    c.Command(com => { com.Custom("Edit").Click("edit"); com.Destroy(); });
})
.Pageable()
.Sortable()
.Selectable()
.DataSource(d => d
    .Ajax()
    .PageSize(20)
    .Model(m => m.Id(i => i.UserName))
    .Read(r => r.Action("ManageUsers_Read", "ManageUsers"))
    .Destroy(o => o.Action("ManageUsers_Destroy", "ManageUsers"))
))

Проблема, с которой я столкнулся, заключается в том, что мне нужно передать идентификатор пользователя, на которого была нажата кнопка редактирования, на экран редактирования, чтобы я мог вывести информацию для выбранного пользователя. Единственный известный мне способ получить эту информацию - через javascript, что-то вроде этого в моей функции нажатия кнопки команды...

function edit() {
    var grid = $("#grid").data("kendoGrid");
    var row = grid.select();
    var dataItem = grid.dataItem(row);
    var id = dataItem.UserId;

    location = "@Url.Action("EditUser")";
}

Это дает мне идентификатор, который мне нужен, но у меня нет способа (известного мне) передать его обратно моему контроллеру. Итак, мой вопрос: как мне вернуть эту информацию на сервер? Есть ли другой способ получить нужную мне информацию, или это невозможно в Kendo UI MVC?

Чтобы сделать это более общим вопросом... когда я смотрю документацию пользовательского интерфейса Kendo, и она говорит мне, как получить значение в javascript... как вообще можно использовать это значение в приложении MVC, когда оно нужно на стороне сервера? Кажется, я не могу найти альтернативный способ MVC сделать это в своей документации.


person aw04    schedule 09.05.2013    source источник


Ответы (1)


Вы должны сформировать дополнительные параметры к строке URL:

location = "@Url.Action("EditUser")" + "?id="+id;
person Kirill Bestemyanov    schedule 09.05.2013
comment
Спасибо, это именно то, что мне было нужно. - person aw04; 09.05.2013
comment
Это один из способов сделать это, но что, если вы не хотите раскрывать идентификатор своему контроллеру? есть ли другой способ сделать это, например, передать весь элемент данных в контроллер из параметра? - person nav; 18.07.2013