【发布时间】:2009-07-23 22:34:21
【问题描述】:
我有一个中继器,其中包含一些项目,其中有一个 DropDownList 和一个按钮。
这里的目标是将 DDL 中的项目与选定的转发器行相关联。
ASPX 代码:
<asp:Repeater ID="sharedPlansList" runat="server"
onitemdatabound="sharedPlansList_ItemDataBound"
onitemcommand="sharedPlansList_ItemCommand">
<ItemTemplate>
<div>
<h1>· <%# Eval("ProductName") %></h1>
<div>
Associer le domaine :
<asp:DropDownList runat="server" ID="domainList" />
<asp:Button ID="associateDomaine" Text="Associer" runat="server"
CommandArgument='<%# Container.DataItem %>' />
</div>
<div>
Domaines :
<asp:BulletedList runat="server" ID="sharedPlanDomains" />
</div>
</div>
</ItemTemplate>
</asp:Repeater>
问题:
当我单击按钮时,每次都会出现 Invalid Postback 或 Callback 异常( Invalid postback 或 callback 参数。事件验证在配置中启用或在页面中使用 。为了安全目的,此功能验证回发或回调事件的参数是否来自最初呈现它们的服务器控件。如果数据有效且符合预期,请使用 ClientScriptManager.RegisterForEventValidation 方法注册回发或回调数据以进行验证。)。但一切似乎都很标准,没有任何真正的异国情调。我也没有通过 javascript 添加任何东西或控件。
我看到了可以将<pages enableEventValidation="false" /> 放在web.config 中的解决方案,但我不确定这是一个好的解决方案,因为我想确保保留 asp.net 内置的安全模型。
是否存在任何变通办法?
【问题讨论】:
-
那个 CommandArgument/Name 真的有效吗?因为我有类似的东西,我根本无法让它工作!完全忽略命令参数。
标签: c# asp.net drop-down-menu repeater