2010-11-25 58 views
1

我想呈現出以下JSON在通過tablerow屬性:如何在TableRows的屬性中渲染雙引號?

{"key": "value"} 

完整的輸出應該是這樣的:

<tr data-json='{"key": "value"}'> ... </tr> 

但是,如果我這樣做:

...雙引號序列化:

<tr data-json="{&#34;key&#34;: &#34;value&#34;}"> ... </tr> 



我想出的唯一解決方案是擴展TableRow控件並手動呈現屬性。如果是這樣的話;你們能建議一個實施嗎?

+0

你找到一個解決方案,但有你不能在JSON數據,而不是雙引號使用單引號的原因嗎? jquery不會解析這一點嗎? – 2010-12-10 14:15:48

+0

當您切換單引號和雙引號時,jQuery會引發錯誤。它必須是有效的JSON。 – roosteronacid 2010-12-13 11:34:44

回答

1

我結束了創建我自己的TableRow類:

public class TableRowAttributeFix : TableRow 
{ 
    private StringBuilder AttributesOutput = new StringBuilder(); 


    protected override void Render(HtmlTextWriter writer) 
    { 
     foreach (String _attributeKey in Attributes.Keys) 
     { 
      var _attributeValue = Attributes[_attributeKey]; 

      if (_attributeValue.Contains("\"")) 
      { 
       AttributesOutput.Append(String.Format(" {0}='{1}' ", _attributeKey, _attributeValue)); 
      } 
      else 
      { 
       AttributesOutput.Append(String.Format(" {0}=\"{1}\" ", _attributeKey, _attributeValue)); 
      } 
     } 


     writer.Write("<tr id=\"" + ClientID + "\" " + AttributesOutput + " class=\"" + CssClass + "\" >"); 

     RenderContents(writer); 

     writer.Write("</tr>"); 
    } 
} 
1

我認爲這不一定是最好的方法 - 據我所知,沒有有效地重寫整個渲染方法,沒有簡單的方法做到這一點。

是否有這樣的問題(感覺更容易) - 請原諒我不存在的js技能。

<tr data-json="getJSON('key', 'value')" /> 


function getJSON(key, value) 
{ 
    return '{ ' + '"' + key + '"' // etc 
}