【问题标题】:Why is break point unreachable when using jQuery Droplistfilter为什么使用 jQuery Droplistfilter 时断点无法到达
【发布时间】:2010-11-26 21:17:54
【问题描述】:

我在我的 Asp.Net 表单上使用这个下拉列表过滤器。
jQuery plugin DropListFilter

下拉列表中的过滤器效果很好。

<script type="text/javascript">
 $(document).ready(function() {
  $('select').droplistFilter();
});
</script>
<asp:DropDownList ID="ddlMonth" runat="server" CssClass="ddlStyle"></asp:DropDownList>
<asp:RequiredFieldValidator ID="rfv_ddlMonth" runat="server" ControlToValidate="ddlMonth"
                    CssClass="warning" Display="Dynamic" ErrorMessage="*" ForeColor=""></asp:RequiredFieldValidator>
 
<asp:Button ID="btnRun" runat="server" CssClass="btnStyle" OnClick="btnRun_Click" Text="Run Report" />
   

代码隐藏

protected void btnRun_Click(object sender, EventArgs e)
{
    Response.Write(ddlMonth.SelectedValue.ToString());
    return;
}

如果我使用 jQuery 过滤器在下拉列表中进行搜索并单击运行报告,则调试器不会在上述 Response.Write 语句处停止。

在应用过滤器并按下运行时,调试器甚至没有点击下面的加载方法。

protected void Page_Load(object sender, EventArgs e)
{
  // Bind Month if !PostBack
}

进一步调查后,我在 Application_Error 上收到以下错误:

回发或回调参数无效。使用配置或页面中的 启用事件验证。出于安全目的,此功能验证回发或回调事件的参数是否源自最初呈现它们的服务器控件。如果数据有效且符合预期,请使用 ClientScriptManager.RegisterForEventValidation 方法注册回发或回调数据以进行验证。

我不想禁用事件验证,那么我该怎么做才能使过滤器起作用?

【问题讨论】:

  • 你能更新你的jQuery代码吗?
  • 调试器是否至少进入“btn_Click”函数
  • 不,调试器没有点击 btn_Click。
  • 如果删除 droplistFilter 会中断吗?或者如果您删除了RequiredFieldValidator? JS Land 可能有冲突
  • 如果我注释 $('select') 行,调试器会在 Response.Write 处停止。如果我删除 ASP.Net 验证器并保持过滤器打开,我根本不会点击 btn_Click。

标签: asp.net jquery filtering


【解决方案1】:

droplistFilter 正在改变 ASP 的预期。

ASP 不喜欢在未经明确书面同意的情况下更改内容。

ASP 期望该下拉列表包含它在下拉列表中放置的内容,当您使用 javascript 更改其中的内容时,asp 将其视为安全风险并给您验证错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-19
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多