当用户输入<>在模式弹出窗口中的asp.net文本框控件中的符号,回发时抛出运行时错误。我知道在过去这个问题的很多答案都是设置ValidateRequest =" false"但是我不想设置它,因为担心会禁用可能会阻止其他攻击的安全功能。
用户希望能够复制和粘贴有时包含<>的电子邮件文本标签,但他们不介意删除标签,他们只是希望在复制和粘贴时自动删除它们,然后提交表单进行服务器处理。
有人能为这类问题提供解决方案的示例吗?如果无法做到,因为用户喜欢什么是替代解决方案?感谢。
答案 0 :(得分:0)
所以我遇到的障碍之一是我想要解雇JS的模态弹出按钮,它被链接到ajax确认按钮扩展器,它不会让它发射。
我必须使用emca脚本修改confirm按钮扩展器的behavior属性,并在该脚本中包含JS函数。最后,我做了一个检查,以确保扩展器不为null,这取决于我可能会或可能不会实例化控件的情况。
这是我的最终解决方案:
在aspx页面开头的Content标签之后我放了我的脚本:
<script type="text/ecmascript">
Sys.Application.add_load(wireEvents);
function wireEvents() {
var behavior = $find("confirmBehavior");
if (behavior !== null)
{ behavior.add_showing(formatText); }
}
function formatText() {
var newValue = document.getElementById('<%=txtStatusComment.ClientID%>').value.replace(/[<>]+/g, "");
document.getElementById('<%=txtStatusComment.ClientID%>').value = newValue;
}
</script>
然后,对于按钮,我执行了以下操作:
<asp:Button ID="btnSaveStatus" runat="server" CssClass="button" OnClick="btnSaveStatus_Click" Text="Save" OnClientClick ="formatText();" />
<asp:Button ID="btnCancelStatus" runat="server" CssClass="button" OnClick="btnCancelStatus_Click" Text="Cancel" OnClientClick ="formatText();" />
<cc1:ConfirmButtonExtender ID="btnSaveStatus_ConfirmButtonExtender" BehaviorID="confirmBehavior" runat="server" DisplayModalPopupID="modalPopupExtender3" Enabled="true" TargetControlID="btnSaveStatus">
</cc1:ConfirmButtonExtender>
希望这可以帮助任何有同样问题的人!