我有一个带有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”方法。
答案 0 :(得分:2)
您应该为url string形成其他参数:
location = "@Url.Action("EditUser")" + "?id="+id;