我想知道是否有人知道允许类似“<<”的方法要提交,而不设置validaterequest = false
我有一个克里奥尔语解析器,推荐的插件/宏语法是:
<<macro-name argo0=foo arg1=bar argN=qux>>
答案 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:LinkButton,在那个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, '<').replace(/>/gi, '>');
}
</script>
然后在服务器上使用Server.HtmlDecode将字符串返回到其原始格式。