2013-01-18 10 views
1

Dojo's dijit html5標籤使用attribte名稱data-dojo-props。該值基本上是JSON字符串,沒有引號圍繞屬性名稱,也沒有最外層的大括號。使用JSON.NET for Dojo data-dojo-props序列化C#對象

它看起來像這樣。

data-dojo-props="prop1:'xyz', prop2:true, prop3: { subprop1: 1, subprop2: 'abc'}" 

我使用C#從C#對象中使用JSON.NET寫入並傳入對象指針。我發現設置忽略了屬性名引號,但我無法弄清楚刪除外括號的優雅方式。

現在,我會通過正則表達式來運行字符串來刪除它們,但是想知道是否有人有更好的方法。

回答

0

我分別序列化每個頂級屬性,並使其成爲全局JavaScript變量。然後我在data-dojo-props中引用該變量。我承認這不是那麼優雅。

我對上述方法的擔憂是,如果subprop2的值包含引號,那麼您將得到解析器錯誤。

<script type="text/javascript"> 
    menuData = {THE SERIALIZED JSON GOES HERE}; 
</script> 
<div data-dojo-type="SomeWidget" data-dojo-props="menuData: menuData"></div> 
+0

那麼,實際上,JSON.net將使這些單引號@@@;所以這不是問題。此外,由於整個屬性值用雙引號括起來,因此您可以使用單引號。他們的方式我的代碼是結構化的,我真的需要將全局變量保持在最低限度,所以我更喜歡將屬性嵌入到html中,並且沒有單獨的js變量。 (還是)感謝你的建議。 – markdemich