簡體   English   中英

在Repeater控件內選擇DropDownList項目

[英]Select DropDownList item inside of a Repeater control

我有一個包含一些項目的轉發器,其中有一個DropDownList和一個Button。

此處的目標是將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進行控件。

我已經看到了可以在web.config放入<pages enableEventValidation="false" />解決方案,但是我不確定這是一個好的解決方案,因為我想確保保留asp.net內置的安全模型。

是否存在任何解決方法?

我不能確定是否不測試一下代碼(我現在沒有時間做這件事),但是您可以驗證分配給按鈕的動態CommandArgument是否是罪魁禍首嗎? 如果將其取出,錯誤會繼續拋出嗎?

如果是這種情況,您可以嘗試處理OnItemDataBound處理程序中的每一行並調用

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

最好的解決方案是用您自己的DropDownList替換DropDownList。 創建DropDownList的子類,然后在ASPX頁面上使用該列表。 我認為您的DropDownList的內容已在客戶端更改(可能是Javascript嗎?)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM