2012-03-06 90 views
1

我有一個DataNavigateUrlFormatString="blahblah/dostuff.aspx?id={0}"GridView超鏈接字段。但後來我遇到了一個情況,其中{0}的字段中有一個加號。它不會被查詢字符串轉義,所以現在它看起來像是一個空格而不是一個加號。在超鏈接字段中,如何查詢字符串轉義值?

我想如果它包含&符號,等號或百分號,會出現類似的問題。

問:有沒有辦法對參數做一個查詢字符串轉義?

我想我可以把它變成TemplateFieldEval。最好這是混亂和醜陋。這似乎是一直會出現的問題。有沒有一種乾淨的方式來做逃生?

回答

1

經過一番探索後,我得出了這樣的結論:沒有簡單的解決方案。您可以使用沒有模板字段的Eval直接生成URL。有些人建議你處理RowDataBound事件並找到正確的列並修復URL,但這對我來說似乎是非常難看的解決方案。

需要大量工作的最乾淨的解決方案是創建一個類,其唯一目的是爲GridView提供源代碼(甚至可以直接將其放在代碼後面),並在後面的代碼中編碼C#代碼中的屬性。這就像在MVC中創建一個ViewModel只是爲了提供一個特定的視圖。

+0

我通過使用一個eval來得到它的工作,但它看起來相當圓潤和醜陋。使用數據綁定事件似乎更加醜陋,因爲一半的代碼在aspx頁面中,一半在代碼隱藏中,另外據我所知,您必須按數字而不是名稱來獲取列,這會創建如果我們稍後添加一列,則爲維護陷阱。我認爲最終的答案是,我做到這一點的方式是一樣的。我知道我並不是毫無必要地努力做到這一點,但我寧願你剛告訴我一些我可以稱之爲乾淨的魔術功能! – Jay 2012-03-07 21:47:36

+0

我希望我知道這樣的功能:( – Stilgar 2012-03-07 22:12:48

相關問題