2011-02-28 17 views
0

我不知道是否有人知道的方式,讓類似「< <」提交,無需設置validateRequest =假允許「<<」提交,無需禁用「validaterequest」

我有克里奧爾語語法分析器,以及推薦的插件/宏語法是:

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

提交什麼?例如,您應該能夠在文本框中輸入任何想要的值。 – recursive 2011-02-28 04:26:35

回答

2

我寫了一個'encodeMyHtml'JavaScript函數,當點擊HTML表單的提交按鈕時,在OnClick事件上調用。該函數在傳遞給服務器之前,將用戶指定的字段的HTML輸入編碼爲無害字符串。當我在服務器上收到輸入信號時,我只需解碼並繼續前進。

ValidateRequest很開心,我們的用戶很開心,我們的同事很開心,我們很開心。

我在我的用戶控件的OnPageLoad方法中添加了我的'encodeMyHtml'JavaScript函數。通過這種方式,無論頁面上有多少個控件,我都可以確保只將JavaScript添加到父頁面一次。

在我的控制的我的onPageLoad稱之爲:

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); 
} 

在我的控制的ASPX我使用一個gridview。我在span標記中包裝了gridview的update asp:LinkBut​​ton,並在該標記中放置了我的OnClickEvent。

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

當我在服務器端的輸入我只需調用幾個輸入字符串替換方法的HTML進行解碼,和我做。

1

你可以做一個javascript正則表達式替換爲「< \ S」在特定領域上的形式提交。但是,不支持JavaScript的瀏覽器會失敗。

0

您可以使用JavaScript客戶端編碼「< <」:

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

,然後在服務器使用Server.HtmlDecode字符串恢復到原來的形態。

相關問題