2012-03-13 67 views
1

我正在使用asp.net mvc 3並正在尋找可能使用的 dynatree.我仍處於研究頁面,並試圖找出一些未解決的問題,然後纔開始真正實施它。dynatree + asp.net mvc - 你如何發佈數據回服務器?

Dynatree with ASP.NET MVC

我一直在看上面的帖子以及如何@馬特彭納呈現他的樹視圖,在我opion看起來比接受的答案乾淨。

但我有一個問題是,你如何發佈選項到服務器?當它被渲染時,它似乎都是被轉換成複選框的子彈標籤。

所以我想知道如何序列化這些數據?現在我有一個表單,當用戶點擊提交時,我做了一個jquery serializeArrary並通過ajax發送到綁定到View Model的服務器。

我該如何處理樹視圖中選擇的選項?

我也不清楚如何使用基於Matt Penner示例的默認選中節點渲染樹視圖。

感謝

回答

2

方式馬特·彭納渲染樹是簡單和清晰......但由於房委會並沒有建立代表樹的數據「模型」,這是不容易的使用他的方法來讀回樹。樹必須被讀回到「模型」中,因爲它是一棵樹,所以這個模型必須像第一個例子中所示的那樣遞歸。

但是,如果您給複選框提供足夠的名稱,則可以將它們讀回。事實上模型上結合後,通過使用一個名稱約定完成,因此例如一個複選框名爲:

兒童[2]。患兒[0] .MyCheckBox

將在回讀: 第三胎第一級=>第一級第二級 您必須建立以接收發布數據的分層模型的模型。

但是,如果用戶沒有修改樹的結構,這種方法效果很好,因爲在這種情況下,名爲Children [2] .Children [0] .MyCheckBox的複選框可能會到達不同的地方,名字暗示,也就是說它不會再是三個孩子的成就水平,並且可能會變成,例如第五個孩子的第一個水平...但是它的名字不會改變。

另一方面,如果您序列化客戶端上的數據,然後用json將它們發送給服務器,那麼您也可以考慮樹形修改。

這就是說看看TreeView of the Mvc Controls Toolkit(我是該項目的協調員)......它已經爲你做好了所有的工作,並且你可以爲每個節點使用一個通用模板,也就是說你可以把你像在每個節點:

+0

這是intresting,但我不知道這是我喜歡使用的東西。我對這個龐大的html幫手並不是太瘋狂,因爲它讓設計師難以接受。我寧願像使用複選框幫助器,而只是一個常規的無序列表標記。 – chobo2 2012-03-27 16:40:37

+0

treeView只顯示包含節點模板的無序列表+它需要工作信息的一些隱藏字段,因此您可以完全控制所創建的html。無論如何,如果你想給自己寫一個完整的Html,這樣你就可以更好地與你的設計師互動,另一種方法是編寫你嵌套的模型綁定忘記。在發佈後,您會調用一個js函數來對樹進行遞歸訪問,並將關於cheched複選框的信息存儲在分層模型中。然後你用json將它序列化,放入一個隱藏的區域,然後在服務器上反序列化它。 – 2012-03-27 16:56:22

+0

你可以舉一個更詳細的例子。我不認爲我需要爲我需要做的事情放棄模型綁定。 – chobo2 2012-03-27 19:23:46