【发布时间】: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。