2012-03-06 16 views
1

DataNavigateUrlFormatString="blahblah/dostuff.aspx?id={0}"GridViewにハイパーリンクフィールドがあります。しかし、{0}の代わりにフィールドにプラス記号がある場合を打ちました。クエリ文字列のためにエスケープされないので、プラスの代わりにスペースのように見えます。、文字列エスケープ値のクエリ方法

アンパサンド、等号またはパーセント記号が含まれる場合、同様の問題が発生すると想定します。

Q:パラメータでクエリ文字列エスケープを実行する方法はありますか?

私はそれをTemplateFieldEvalに変えることができたと思います。最高でそれは面倒で醜いです。これはいつも起きる問題のようです。エスケープを行うためのきれいな方法はありますか?

答えて

1

少しの検索の後、私は結論に至りました。これには簡単な解決策はありません。テンプレートフィールドなしでEvalを使用すると、URLを直接生成できます。 RowDataBoundイベントを処理して正しい列を見つけてURLを修正することをお勧めしますが、これは私にとって非常に醜い解決策のようです。

多くの作業を必要とする最もクリーンな解決策は、GridViewにフィードする目的(コード内に直接配置することさえできます)と、コード内のC#コードでプロパティをエンコードすることだけです。これは、特定のビューにフィードするためにMVCにViewModelを作成するようなものです。

+0

私はevalを使って動作させましたが、それはむしろ丸くて醜いようでした。データバインドされたイベントを使用すると、コードの半分がaspxページにあり、半分がコードビハインドにあり、私の知る限りでは、名前ではなく番号で列を取得する必要があります。後で列を追加する場合はメンテナンストラップです。最終的な答えは、私がやったやり方は、それが得られるほど良いことだと私は思う。私はそれを不必要に難しい方法でやっていないことを知っていることを安心していますが、私はそれをきれいにすることができるいくつかの魔法の機能をあなたに教えてほしかったでしょう! – Jay

+0

私はそのような機能を知ってほしかった:( – Stilgar