我想我曾與Telerik的樹視圖類似的問題,並通過與jQuery繞道解決它。
我的問題是,它無法將任何(Link)HtmlAttributes傳遞給View中的TreeViewItems。我試過幾個HtmlAttributes在控制器添加到樹型視圖(如一個屬性我想添加到 <一>元素):
newNodes[i].HtmlAttributes.Add("data-ajax-update","#main");
,但經過返回爲 JsonResult Ajax-Request,除之外的所有文本,.Value,.Enabled,.LoadOnDemand,.Url都在視圖中爲空。
我找到了一個合理的答案,這些因素沒有得到在Telerik的論壇連載: http://www.telerik.com/community/forums/aspnet-mvc/treeview/target-blank-on-treeviewitem-url.aspx#1548458
我解決它,然後,用加入了特殊
<span class="treeViewItemAddAjaxLocation"></span>
元至。文本的TreeViewItem。然後通過View中的jQuery定位這些元素,並將所需的html屬性添加到 < a>元素中。
Telerik的樹視圖綁定通過Ajax的第二和第三階段的元件的方法,包括:
.DataBinding(databinding => databinding.Ajax().Select("_AjaxLoading", "Menu"))
控制器片斷在行動 「_AjaxLoading」:
IList<TreeViewItem> newNodes = new List<TreeViewItem>();
foreach (RevisionEntity revision in revisions)
{
newNodes.Add(new TreeViewItem()
{
Text = "Node Name" + "<span class='treeViewItemAddAjaxLocation'></span>", // name + locator element
Value = revision.ID.ToString() + ";RevisionEntity",
Encoded = false,
Enabled = true,
LoadOnDemand = false,
Url("/Menu/NavigateToRevisionDetails"), // creates an <a> element
});
}
return new JsonResult { Data = newNodes };
檢視:
<div class="t-bot">
<a class="t-link t-in" href="/Menu/NavigateToRevisionDetails" data-ajax-update="#main" data-ajax-mode="replace" data-ajax-method="GET" data-ajax="true">Node Name
<span class="treeViewItemAddAjaxLocation"></span>
</a>
<input class="t-input" type="hidden" value="774336a5-c6eb-42cc-905a-4d215c957fa2;RevisionEntity" name="itemValue">
</div>
function TreeView_onLoad(e) {
var treeView = $(this).data("tTreeView");
$(".treeViewItemAddAjaxLocation", treeView.element)
.each(function() {
var $this = $(this); // put it in jQuery constr
item = $this.closest(".t-link"); // take the a
item.attr('data-ajax-update', '#main');
item.attr('data-ajax-mode', 'replace');
item.attr('data-ajax-method', 'GET');
item.attr('data-ajax', 'true');
$this.remove(); // removes the span element
});
}
結果TreeView元素:
<div class="t-bot">
<a class="t-link t-in" href="/Menu/NavigateToRevisionDetails" data-ajax-update="#main" data-ajax-mode="replace" data-ajax-method="GET" data-ajax="true">Node Name</a>
<input class="t-input" type="hidden" value="774336a5-c6eb-42cc-905a-4d215c957fa2;RevisionEntity" name="itemValue">
</div>
通過#main html-element中的Ajax加載通過「NavigateToRevisionDetails」操作調用的部分視圖,並且頁面的其餘部分不會刷新!
'LinkHtmlAttributes'是一個只讀屬性。有一個'Template'屬性,但它沒有爲TabStripItem記錄。 – ProfK
@ProfK,的確,它有一個私有的setter,那麼第二個代碼片斷應該可以工作。 –
Eish,對不起,我忽略了這一點。我結束了與jQuery的作弊,呵呵。 – ProfK