首页 文章

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

提问于
浏览
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”方式来做到这一点 .

1 回答

  • 2

    您应该为url字符串形成其他参数:

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

相关问题