将RequiredFieldValidator放在asp:DataList中

时间:2016-06-16 09:06:20

标签: c# asp.net webforms

将RequiredFieldValidator放入DataList时遇到问题,我们非常感谢您提供一些帮助。

问题描述:

当我将<asp:RequiredFieldValidator>放入<ItemTemplate>并运行页面时,我会收到以下错误页面:

enter image description here

当我把它放在它之外时,页面没有错误,但显然它无法识别巫婆<asp:TextBox>在回发之前没有内容。我想知道数据列表中的特定文本框是否没有输入文本。

这是标记:( Image src属性尚未实现)

            <asp:DataList ID="imageUploadRoster" runat="server"
            DataSourceID="ImageUploadRosterDataSource" RepeatDirection="Horizontal" RepeatColumns="5" HorizontalAlign="Left">
            <HeaderTemplate>
                <h3>Set Image Names</h3>
            </HeaderTemplate>
            <ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" Height="180px" Width="180px" />
            <ItemTemplate>
                <div class="imageSetNameDiv">
                    <asp:HiddenField ID="ImageId" runat="server" Value='<%# Eval("ImageId") %>' />
                    <asp:HiddenField ID="ImageMimeTypeLabel" runat="server" Value='<%# Eval("ImageMimeType") %>' />

                    <asp:Image ID="ImageThumbnailLabel" runat="server" Src='<%# Eval("ImageThumbnail") %>' Width="120px" Height="120px" />
                    <br />
                              <asp:RequiredFieldValidator ID="imageNameRequired" runat="server" 
                        ControlToValidate="ImageName" ErrorMessage="RequiredFieldValidator" 
                        ValidationGroup="imageUploadValid">

                    </asp:RequiredFieldValidator>
                    <asp:TextBox ID="ImageName" runat="server" Text='<%# Eval("ImageName") %>' />


                    <br />

                    <hr />
                    <asp:Button ID="removeImage" runat="server" Text="Remove" CommandName="delete" CommandArgument='<%# Eval("ImageId") %>' />
                </div>
            </ItemTemplate>
        </asp:DataList>

提前感谢您的任何帮助。 彼得

1 个答案:

答案 0 :(得分:1)

当ASP.NET遇到页面上具有相同ID的两个控件时,会发生此错误。我想由于某种原因,在你的情况下,每个项目的验证器获得相同的ID。设置以下属性:

ClientIDMode="Predictable"

验证者应该修复它。此模式可确保数据绑定上下文中的控件获得正确的ID。