2

Spark ビュー エンジンを使用して Web サイトを開発しています。Spark ビューの 1 つには、同じ Spark ビューで定義された JavaScript で使用される viewdata が定義されており、(要するに) 次のようになります。

<viewdata model="ConversationViewModel"/>

<content name="Conversation">
  ...
  <script type="text/javascript">
    $(function () {
      conversation.init("$!{Model.RelationFullName}");
    });
  </script>
</content>

ここでの問題は、RelationFullName プロパティの値に一重引用符や二重引用符が含まれる可能性があることです。

引用符をエスケープする方法はありますか?

4

1 に答える 1

1

を最初のパラメーターとする拡張メソッドJavaScriptEscapeを作成this stringし、_global.spark に use タグを追加することができます。このメソッドは特殊文字を置き換えて結果を返します。最初にバックスラッシュを必ず置き換えてください。そうしない'と、\\'代わりに になり\'ます。

namespace Whatever.Your.Namespace.Is
{
    public static class MyStringExtensions
    {
        public static String JavaScriptEscape(this String p_string)
        {
            p_string = p_string ?? String.Empty;
            p_string = p_string.replace("\\", "\\\\");
            /* Do the rest of the replacements, include single and double quotes. */
            return p_string;
        }
    }
}

_global.spark:

<use namespace="Whatever.Your.Namespace.Is" />

JavaScript の行は次のようになります。

conversation.init("$!{Model.RelationFullName.JavaScriptEscape()}");

幸運を!

于 2012-08-09T19:56:33.583 に答える