2009-07-23 93 views
1

我有一个包含几个项目的中继器,其中有一个DropDownList和一个按钮。在Repeater控件中选择DropDownList项目

此处的目标是将DDL中的项目与选定的中继器行相关联。

ASPX代码:

<asp:Repeater ID="sharedPlansList" runat="server" 
    onitemdatabound="sharedPlansList_ItemDataBound" 
    onitemcommand="sharedPlansList_ItemCommand"> 
    <ItemTemplate> 
     <div> 
      <h1>&middot; <%# 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> 

问题:

当我点击按钮各一个无效的回发或回调异常(无效的回发或回调参数事件验证使用配置中启用时间,我有。或<%@ Page EnableEventValidation =“true”%>在页面中出于安全目的,此功能验证回发或回调事件的参数来自最初呈现它们的服务器控件如果数据有效且期望,请使用ClientScriptManager.RegisterForEventValidation方法为了注册回发或回调数据进行验证。 )。但是没有任何真正奇特的东西,一切似乎都很标准我不会通过JavaScript添加任何东西或控件。

我已经看到了解决方案,您可以将<pages enableEventValidation="false" />放在web.config中,但我不确定这是一个很好的解决方案,因为我想确保保留asp.net内置的安全模型。

是否存在任何解决方法?

+0

是否该CommandArgument/Name实际上工作?因为我有类似的东西,我根本无法完成它!完全忽略了命令参数。 – Sebastian 2009-08-31 20:04:23

回答

0

我不能确定没有测试你的代码(我没有时间做这个第二),但是你可以验证你分配给你的按钮的动态CommandArgument是罪魁祸首吗?如果你把它拿出来,错误是否继续被抛出?

如果是这样的话,你可以尝试处理每个行的OnItemDataBound处理程序,并调用

ClientScript.RegisterForEventValidation("associateDomaine", -->CommandArgHere<--); 
+0

由于在添加CommandArgument之前发生错误,因此未链接:/ – Erick 2009-07-23 23:14:01

0

最好的解决办法是用自己的DropDownList取代的DropDownList。创建DropDownList的子类,并在ASPX页面上使用该列表。我认为你的DropDownList的内容在客户端发生了变化(可能是由Javascript?)。

相关问题