まず第一に、質問を検索しましたが、それ以上進むのに役立つものは何も見つかりませんでした。
現在のユーザーの権限を設定できるビューを実装しようとしています。
データ構造として、各 PermissionTree-Object がサブ権限を参照する次の再帰クラスを使用します (権限はアプリケーションで階層的に構造化されています)。
public class PermissionTree
{
public Permission Node; //the permission object contains a field of type SqlHierarchyId if that is relevant
public bool HasPermission;
public IList<PermissionTree> Children;
//i cut out the constructors to keep it short ...
}
コントローラーは次のようになります。
//this is called to open the view
public ActionResult Permissions()
{
//pass the root element which contains all permission elements as children (recursion)
PermissionTree permissionTree = PopulateTree();//the fully populated permission-tree
return View(permissionTree);
}
//this is called when i submit the form
[HttpPost]
public ActionResult Permissions(PermissionTree model)
{
SetPermissions(model);
ViewData["PermissionsSaved"] = true;
return View(model);//return RedirectToAction("Index");
}
次のような強く型付けされたビューを使用しています。
@model PermissionTree
//....
@using (Html.BeginForm("Permissions", "Permission", null, FormMethod.Post, new { @class = "stdform stdform2" }))
{
<input name="save" title="save2" class="k-button" type="submit" />
<div class="treeview">
//i am using the telerik kendoUI treeview
@(Html.Kendo().TreeView()
.Name("Permissions")
.Animation(true)
.ExpandAll(true)
.Checkboxes(checkboxes => checkboxes
.CheckChildren(true)
)
.BindTo(Model, mapping => mapping
.For<PermissionTree>(binding => binding
.Children(c => c.Children)
.ItemDataBound( (item, c) => {
item.Text = c.Node.PermissionName;
item.Checked = c.HasPermission;
})
)
)
)
わかりましたので、ボタンをクリックすると、ビューモデルが で装飾されたコントローラーアクションに送信されるようにし[HttpPost]
ます。しかし、アプリケーションをデバッグすると、受信したモデルには実際にはデータが含まれていません (null ではありません)。目標を達成してビューモデル全体を取得する方法を知っている人はいますか?
よろしく、r3try