ユーザー管理に使用している 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」方法が見つからないようです。