2013-01-17 14 views
6

'+'記号が削除されているため、剣道グリッドの列に対してASP.NET MVC ClientTemplateを定義する際に問題が発生しました。クライアント側で生成されたテンプレートは構文が正しくないために失敗します。剣道のグリッドをエスケープするASP.NET MVC ClientTemplate

私ClientTemplateは次のとおりです。クライアントで

c.Template(@<text></text>).ClientTemplate("#='Hello' + Name#") 

、しかし、これはに減少します:プラス記号は、私が推測するURLエンコーディングと似た空間(としてレンダリングされている。すなわち

template: "#='Hello' Name#" 

)。 JSから直接使用するとテンプレートが完全に機能します(JSBin参照)。

ClientTemplateで使用できるように+記号をエスケープする方法を知っている人はいますか?

Iは、(&#44; '仕事微細として他人が、+同じ)&#43;、( '\ 'としてレンダリングされる) '\\+' を使用してエスケープ(無効C#)を' \+' を試みました。

アイデア?ありがとう。

はNOTE(私たちはTelerikからアップグレードしているとして、jQueryのバージョンによって限定されると、まだQ3を使用することはできません)私はカミソリのマークアップとQ2 2012剣道のリリースを使用しています参考

は誰もが尋ねる前に、なぜI 「あなたは算術演算を取り、以下のように引用の外にそれを入れてみましたこれを行うM、私のClientTemplateは、実際にはもっと複雑ですが、これは

答えて

6

解決策が見つかりました(回避策の可能性があります)。むしろ、私は別のJS関数に私のコードを移動し、テンプレートコード、例えばからというというJavaScriptインライン書くより:テスト容易性、再利用、これはおそらくアプローチである一般的に良い練習の理由のため、

#=myFunctionToDoComplicatedStuff(Name)# 

正直に言うととにかく取られるべきである。それは少しでも些細なことのために少し面倒です!

0

:-)問題を説明するために簡略化した例である:

c.Template(@<text></text>).ClientTemplate("#='Hello'" + "Name#")

+0

私の実際のコードは、文字列の連結よりも複雑です - 実際には算術加算を行う必要がある条件文の一部として、少しの論理がありますので、+が必要です。私が今までに持っている回避策は、JSを関数に移動して呼び出すことですが、テンプレート内でそれをすべて一緒に保つためにはうれしいでしょう。乾杯。 –

0

これは価値があるため、私はこれに遭遇し、負の値を減算することで解決しました。そのようなもの:

kendo.parseFloat(Amount) - -kendo.parseFloat(Tip) 
0

私はalternative plus signを使って解決策を見つけました。

c.Template(@<text></text>).ClientTemplate("#='Hello' (<span style=\\'font-size: 0.6em\\'>&#10133;</span>{ Name#")

これになります...

template: "#='Hello + Name#" 
1

あなただけのエンコーディングの問題プラス記号を回避し、あなたのClientTemplateで連結を行うための簡単な解決策が必要な場合は、次のようにJavaScriptのconcat関数を使用することができます。

c.Template(@<text></text>).ClientTemplate("#='Hello'.concat(Name)#") 
9

私はソースをチェックしますコードの場合、MVCラッパーはすべてのテンプレートでHttpUtility.UrlDecodeをJSにレンダリングする前に呼び出しています。したがって、+記号(またはその他の予約URL文字)をエスケープするには、percent encodingを使用してください。この場合%2B

c.Template(@<text></text>).ClientTemplate("#='Hello' %2B Name#") 

v2013.3、SRC \ Kendo.Mvc \ Kendo.Mvc \ UI \グリッド\列\ GridColumnBase.cs、ライン135私は、これはバグである疑いがあると彼らはHttpUtility.UrlEncodeを呼び出すためのもの。

関連する問題