MVC中的Kendo UI网格 - 如何将选定的行项返回到Controller

时间:2013-05-09 17:51:26

标签: asp.net asp.net-mvc asp.net-mvc-4 kendo-ui kendo-asp.net-mvc

我有一个带有Kendo UI网格的MVC 4应用程序,我用它来进行用户管理。我在网格中显示用户信息,并有一个自定义命令按钮,单击该按钮可打开新页面以编辑用户信息。由于各种原因(一个是要编辑太多信息以在网格中显示),我需要在新页面上编辑用户,而不是使用内联或弹出或单元格编辑。我的网格看起来像这样......非常简单

@(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"))
))

我在这里遇到的问题是我需要将编辑按钮被点击的用户的ID传递到编辑屏幕,以便我可以显示所选用户的信息。我知道获取此信息的唯一方法是通过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")";
}

这给了我需要的ID,但我没办法(我知道)把它传回给我的控制器。所以我的问题是......如何将这些信息反馈给服务器端?有没有其他方法可以获取我需要的信息,或者这只是Kendo UI MVC中无法实现的内容?

这是一个更普遍的问题..当我查看Kendo UI文档时,它告诉我如何在javascript中获取值...一般来说,如何在MVC应用程序中使用此值什么时候需要在服务器端?我似乎无法在他们的文档中找到另一种“MVC”方法。

1 个答案:

答案 0 :(得分:2)

您应该为url string形成其他参数:

location = "@Url.Action("EditUser")" + "?id="+id;