0

我有一个带有 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”方式来做到这一点。

4

1 回答 1

2

您应该为 url 字符串形成附加参数:

location = "@Url.Action("EditUser")" + "?id="+id;
于 2013-05-09T18:10:21.810 回答