が、私はこの剣道MVC UIのアイテムを持っている:Kendo Dialogの内容をKendo MVCの項目に置き換えますか?
@(Html.Kendo().Dialog()
.Name("Details")
.Title(GetText("menutreeselectionbutton", "Role/ManageRoleTemplates"))
.Content(
Html.Kendo().TreeView()
.Name("menuTreeView")
.TemplateId("treeview-template")
.LoadOnDemand(false)
.AutoScroll(true)
.DataSource(source =>
{
source.Model(model => model.Id("MenuItemId")
.HasChildren("HasChildren"))
.Read(read => read.Action("_GetMenuItems", "Role").Data("GetRoleIdFromHiddenField"))
.Events(e => e.RequestEnd("requestEndHandler"));
})
.ToHtmlString()
)
.Visible(false)
.Modal(true)
.Width(400)
.Actions(actions =>
{
actions.Add().Text(GetText(Constant.CANCEL, Constant.TEXT_GLOBAL));
actions.Add().Text(GetText(Constant.SAVE, Constant.TEXT_GLOBAL)).Primary(true).Action("saveMenuTreeSelection");
}))
アイデアは、そこにいくつかの情報を持つグリッドで、ツリービューでダイアログを開き、各エントリのためのボタンをクリックすることができるということですし、あなたはそこでいくつかの選択をすることができます。
問題は、このツリービューはページの読み込み時に読み込まれ、多くの不必要なトリップをバックエンドに費やすことです。前の選択からのツリービューが表示され、新しいデータがフェッチされてリロードされるため、ダイアログを閉じてグリッド内の別のエントリを開くときにも問題が発生します。
私は、ダイアログを開いたときにのみツリービューをロード(またはレンダリング)し、閉じたときに再び「クリア」します。
これを解決する方法はありますか?
私はjavascriptで読み込みアクションを置き換えようとしましたが、うまく動作しませんでした。
$("#Details").data("kendoDialog").content("@(Html.Kendo().TreeView()
.Name("menuTreeView")
.TemplateId("treeview-template")
.LoadOnDemand(false)
.AutoScroll(true)
.DataSource(source =>
{
source.Model(model => model.Id("MenuItemId")
.HasChildren("HasChildren"))
.Read(read => read.Action("_GetMenuItems", "Role").Data("GetRoleIdFromHiddenField"))
.Events(e => e.RequestEnd("requestEndHandler"));
})
.ToHtmlString().Replace(Environment.NewLine, ""))");
そして「作品」でなく、ここに示したように、それは、レンダリングのみ生のHTMLコードを表示するdoesntの:私もそう(少し読みやすくするため、ここでは修正された)のようなコンテンツを交換しようとした
私は迷っています。それはそのままで正常に動作しますが、まったく最適ではありません。
MVCラッパー構文は、コントローラから返されたビューを作成するときにサーバー上でのみ動作するため、MVCラッパー構文を使用してDOMにコンテンツを動的に追加できないため、置換コンテンツは機能しません。代わりに、同等のjavascript jquery構文を使用してみてください。 – NigelK
返信いただきありがとうございます。しかし、すべてのMVCラッパーがJavaScriptを生成するので、AFAIKは動作するはずです。これは、サーバーからページロード時に生成されたhtmlとjavascriptを出力します。一度それが生成された場合、それはあなたがそれを自分で作った場合と同じジャバスクリプトです。そして、私が心に留めていることのために、それは全くうまくいく。これは生のコードを表示するダイアログです。オリジナルの投稿をスクリーンショットで更新します。 –