从asp文本框中删除链接到确认按钮扩展器的HTML标签,而不设置ValidateRequest =" false"

时间:2015-11-30 17:06:37

标签: javascript html asp.net validation

当用户输入<>在模式弹出窗口中的asp.net文本框控件中的符号,回发时抛出运行时错误。我知道在过去这个问题的很多答案都是设置ValidateRequest =" false"但是我不想设置它,因为担心会禁用可能会阻止其他攻击的安全功能。

用户希望能够复制和粘贴有时包含<>的电子邮件文本标签,但他们不介意删除标签,他们只是希望在复制和粘贴时自动删除它们,然后提交表单进行服务器处理。

有人能为这类问题提供解决方案的示例吗?如果无法做到,因为用户喜欢什么是替代解决方案?感谢。

1 个答案:

答案 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>

希望这可以帮助任何有同样问题的人!