2011-02-28 7 views
0

を無効にすることなく、提出するために許可しますクレオールパーサーを持っている、と推奨プラグイン/マクロの構文は次のとおりです。「<<」は誰が提出する「< <」のような何かをできるようにする方法を知っている場合、私は私がのvalidateRequest = falseを</p> <p>を設定せずに、思ったんだけど「のvalidateRequest」

<<macro-name argo0=foo arg1=bar argN=qux>> 
+0

提出先は?たとえば、任意の値をテキストボックスに入れることができるはずです。 – recursive

答えて

2

HTMLフォームの送信ボタンがクリックされたときにOnClickイベントで呼び出される少しの 'encodeMyHtml' JavaScript関数を記述しました。この関数は、指定したフィールドのユーザーのHTML入力を無害な文字列にエンコードしてからサーバーに渡します。サーバー上でその入力を受け取ると、私は単純にデコードして行きます。

ValidateRequestは満足しています。私たちのユーザーは満足しています。私たちの同僚は満足しています。

私の 'encodeMyHtml' JavaScript関数をユーザーコントロールのOnPageLoadメソッドに追加しました。こうすることで、ページ上のコントロールの数に関係なく、JavaScriptが親ページに1回だけ追加されるようにすることができます。私のコントロールのOnPageLoadで

私はこれを呼び出す:私はGridViewコントロールを使用しています、私のコントロールのASPXで

private void addEditorJavaScript() 
{ 
    // create our HTML encoder javascript function 
    // this way it shows up once per page that the control is on 
    string scr = @"<script type='text/javascript'>function encodeMyHtml(name){ 
       var content = document.getElementById(name).value 
       content = content.replace(/</g,'<'); 
       content = content.replace(/>/g,'>'); 
       document.getElementById(name).value = content; 
      }</script>"; 

    // add the javascript into the Page 
    ClientScriptManager cm = Page.ClientScript; 
    cm.RegisterClientScriptBlock(this.GetType(), "GlobalJavascript", scr); 
} 

を。私はspanタグのgridviewの更新asp:LinkBut​​tonをラップし、そのspanタグで私はOnClickEventを配置します。

<span onclick="encodeMyHtml('<%# UniqueID.Replace("$", "_") %>_FormViewContentManager_ContentTextBox')"> 
    <asp:LinkButton ID="UpdateButton" runat="server" CausesValidation="True" CommandName="Update" Text="[Publish]" /> 
</span><span onclick="encodeMyHtml(' 

私がサーバー側で入力を取得したら、入力文字列のReplaceメソッドを2回呼び出してHTMLをデコードします。

1

あなたはjavascriptの正規表現を提出し、フォーム上の特定のフィールドに「< \ S」のために置き換える行うことができます。しかし、それはjavascriptをサポートしていないブラウザでは失敗します。

0

あなたはJavascriptを使用して、クライアント上で「< <」をエンコードすることができます。サーバーの利用Server.HtmlDecode上

<script language="javascript"> 
function encodeString(str) { 
    return str.replace(/</gi, '&lt;').replace(/>/gi, '&gt;'); 
} 
</script> 

そしてを元の形式に文字列を返すように。

関連する問題

 関連する問題