2013-03-26 97 views
0

在帶有aspx視圖的.NET MVC項目中工作。我有這個樹形視圖的局部視圖:TreeView在渲染的HTML之前在ID前面加上GUID

<%  
TreeNode treeNode = Model.TreeNode; 
treeNode.SelectAction = TreeNodeSelectAction.None; 
tv1.Nodes.Add(treeNode); 
tv1.ExpandAll(); 
%> 

<form runat="server" id="form1"> 
<asp:TreeView runat="server" ID="tv1" ShowLines="true" EnableClientScript="true"> 
</asp:TreeView> 
</form> 

但呈現與一個GUID搞砸了JavaScript代碼展開/摺疊(這意味着它不工作)前面加上一個id一個div。爲什麼?

<div id="46ea7e79-e351-46fa-93cc-597e7cfe280b_tv1"> 
<table style="border-width:0;" cellpadding="0" cellspacing="0"> 
    <tbody><tr> 
    <td><a id="46ea7e79-e351-46fa-93cc-597e7cfe280b_tv1n0" href="...">..</a></td> 
    <td><span id="46ea7e79-e351-46fa-93cc-597e7cfe280b_tv1t0">...</span></td> 
    </tr></tbody> 
    ... 
</table> 
</div> 

我使用Ajax加載部分視圖並將內容附加到div。

回答

1

我相信這些GUID來自MVC Web窗體視圖引擎,它在隨機ID給創建的ASP.NET頁面。在Web窗體中,控件ID是分層的,因此控件將其父控件的ID添加到它(在這種情況下,頁面是祖先)。我不記得它爲什麼這樣做,但我認爲這是爲了解決一些錯誤。

話雖如此,使用ASP.NET Web窗體TreeView控件的<form runat="server">絕對不支持在MVC中。因此,即使您修復了GUID問題,仍然不支持在MVC中使用Web窗體控件。

+0

我一直在這個項目中運行gridview控件,並沒有問題。我想你的意思是它可能工作,但不能保證?仍然想知道爲什麼他們會用一個無效的ID代替ID! – 2013-03-26 22:09:48

+0

@petern右鍵,一些控件巧妙地工作,但它們並不真正支持。 – Eilon 2013-03-26 22:34:31

+0

我終於得到了Ids理智,(設置this.Id部分),但生成的JavaScript仍然引用了g-u-i-d_data類型的變量。接受了@Eilon的建議並放棄了它。現在使用jstree。謝謝。 – 2013-03-28 15:06:59