Asp验证器:一次全部开火(不想要)

时间:2016-09-12 10:28:13

标签: c# asp.net validation requiredfieldvalidator validationsummary

我有一个ASP.net网页托管一个分成各种更新面板的表单,以改善页面的流量。 没有选项卡和更新面板,用户需要一段时间才能一直滚动到底部。

我有各种独立验证的数据表,它们的摘要显示在我为其指定的区域。 当完整文档提交到服务器时,所有这些都会触发。所有这些都符合我的预期。

但是,我被要求在此页面中添加文件功能,因此我再次使用上传控件嵌套在自己的更新面板中(绑定到按钮的异步触发器) 当Required validator正确返回false并显示错误消息时,这将按预期工作。

这里的真正问题是,在成功验证(和回发)后,ENTIRE页面会尝试重新验证,因此,所有必需字段都会注册为false。 这是显示此行为的页面的唯一部分

有没有人知道,或者有人可以建议我在哪里可以找到我明显缺失的信息。

 <asp:UpdatePanel runat="server" ID="uPnlDocs" UpdateMode="Conditional"> 

        <Triggers>
            <asp:PostBackTrigger ControlID="btnUploadFile" />
        </Triggers>

        <ContentTemplate>

            <div id="DivDocs" runat="server" class="tab-pane" visible="false">

                <div class="panel panel-default">

                    <div class="panel-heading">

                        <asp:Label ID="Label1" runat="server">
                    <h3><u>Supporting Documents</u></h3 >
                            <h4>Please upload any documents you would like to attach to the currently selected DRD record. </h4>
                            <h5>Click the "Browse/Choose File" button to select a file, Then click "Upload File"</h5>

                        </asp:Label>

                    </div>
                    <br />

                    <div class="panel-body">
                        <!-- Controls go in here -->
                        <asp:FileUpload runat="server" ID="DrdFile" CssClass="col-sm-3" ViewStateMode="Enabled"   />
                        <asp:Button runat="server" CausesValidation="true" ValidationGroup="VGUpload" ID="btnUploadFile" Text="Upload File" CssClass="btn btn-success col-sm-2" OnClick="btnUploadFile_Click" />
                        <asp:RequiredFieldValidator runat="server" ID="RFV_Upload" ControlToValidate="DrdFile" Display="None" ValidationGroup="VGUpload" ErrorMessage="File not Selected" CssClass="validationError col-sm-6"></asp:RequiredFieldValidator>


                        <asp:Label runat="server" ID="lblUploadText" Text="Add a description to go with your file" CssClass="col-sm-12" AssociatedControlID="txtUploadFile" />
                        <asp:TextBox runat="server" ID="txtUploadFile" TextMode="MultiLine" Rows="4" CssClass="col-sm-10" />

                    </div>

                </div>

更新 -

通过进一步的研究和测试,我发现我的所有验证器都被解雇了,不仅仅是必需的字段验证器

根据MSDN; https://msdn.microsoft.com/en-us/library/hh882339(v=vs.110).aspx

当表单提交时,我应该能够停止验证;

  1. 把&lt; @ PAGE validateRequest =&#34; false&#34; %GT;在页面指令(已尝试)

  2. 将设置添加到web.config文件(也已尝试过)

  3. 此时我的想法已经不多了,我希望有人想出这个想法。

1 个答案:

答案 0 :(得分:0)

FileUpload控件与UpdatePanel不兼容。这可能是问题所在。

来自Microsoft Site

与UpdatePanel控件不兼容的控件

以下ASP.NET控件与部分页面更新不兼容,因此不适用于UpdatePanel控件:

  • 几种情况下的TreeView控件。一种是启用不属于异步回发的回调。另一种方法是直接将样式设置为控件属性,而不是通过使用CSS样式的引用来隐式设置控件样式。另一种是当EnableClientScript属性为false时(默认为true)。另一种方法是在异步回发之间更改EnableClientScript属性的值。

  • 将样式直接设置为控件属性时的菜单控件,而不是通过使用对CSS样式的引用来隐式设置控件样式。有关详细信息,请参阅菜单控制概述。

  • FileUpload和HtmlInputFile控制何时用于上传文件作为异步回发的一部分。

  • 当GridS和DetailsView的EnableSortingAndPagingCallbacks属性设置为true时,它们会进行控制。默认值为false。

  • 登录,PasswordRecovery,ChangePassword和CreateUserWizard控件,其内容尚未转换为可编辑模板。

  • 替换控制。

  • 验证控件,包括BaseCompareValidator,BaseValidator,CompareValidator,CustomValidator,RangeValidator,RegularExpressionValidator,RequiredFieldValidator和ValidationSummary控件。