允许“<<<提交,而不禁用“validaterequest”

时间:2011-02-28 04:11:06

标签: c# asp.net validation

我想知道是否有人知道允许类似“<<”的方法要提交,而不设置validaterequest = false

我有一个克里奥尔语解析器,推荐的插件/宏语法是:

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

3 个答案:

答案 0 :(得分: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的更新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方法来解码HTML,我就完成了。

答案 1 :(得分:1)

您可以在表单提交的特定字段上对“&lt; \ S”执行javascript正则表达式替换。但是对于不支持javascript的浏览器会失败。

答案 2 :(得分:0)

您可以对“&lt;&lt;”进行编码在客户端上使用Javascript:

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

然后在服务器上使用Server.HtmlDecode将字符串返回到其原始格式。