首页 > 解决方案 > 导致验证的信息框

问题描述

我有一个 ASP 页面,其中有一个文件上传器。此文件上传器附加了一个必填字段验证器。当我选择要上传的文件时,文件上传成功,并出现一个带有成功消息的信息框。

当我单击信息框上的确定使其消失时,它会尝试再次验证整个页面并且信息框不会消失。

我尝试将文件上传器上的 CausesValidation 属性设置为 false,但没有成功。我也尝试过 AutoPostBack 和 IsPostBack。

aspx 代码

<%@ Page Title="Excel File Content Upload" Language="vb" AutoEventWireup="false" MasterPageFile="~/Site.Master"
         CodeBehind="ExcelFileContentUpload.aspx.vb" Inherits="Company.Applications.ProductionEngine.UI.ExcelFileContentUpload" %>

<%@ Register Src="~/GenericControls/UC_InformationMessageBox.ascx" TagName="InformationBox"
    TagPrefix="uc" %><asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<h2>
    <asp:Label ID="lblTitle" Text="Excel File Content Upload" runat="server" />
</h2>
<br />
    <asp:FileUpload ID="fileUploader" runat="server" Width="400px"/>
<br />
<br />
    Choose Year: <asp:DropDownList ID="ddlYear" runat="server"></asp:DropDownList>
    Choose Month: <asp:DropDownList ID="ddlMonth" runat="server"></asp:DropDownList>
<br />
<br />
    <asp:Button ID="btnDataUpload" runat="server" Text="Upload Data" CssClass="buttonBlue"
                        Visible="true" Width="115px"/>
    <asp:UpdatePanel ID="MainContentUpdatePanel" runat="server">
        <ContentTemplate>
            <uc:InformationBox ID="InformationBox" runat="server" EnableViewState="true"/>
            <asp:RequiredFieldValidator ID="rvfFileUploader" runat="server" ControlToValidate="fileUploader"
                                        ErrorMessage="* Select an Excel file to upload" ForeColor="Red"></asp:RequiredFieldValidator>
        </ContentTemplate>
    </asp:UpdatePanel>
</asp:Content>

页面加载

#Region "PAGE LOAD"
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        'Load years and months into their respective dropdown lists
        If Not Page.IsPostBack Then
            Dim _currentYear As Integer = DateTime.Now.Year
            Dim _previousYear As Integer = DateTime.Now.Year - 1
            Dim _month = CultureInfo.CreateSpecificCulture("en").DateTimeFormat.MonthNames

            For i As Integer = 0 To _month.Length - 1
                ddlMonth.Items.Add(New ListItem(_month(i), i + 1).ToString())
            Next

            ddlYear.Items.Add(_currentYear)
            ddlYear.Items.Add(_previousYear)
        End If

    End Sub
#End Region

标签: asp.netvb.netvalidation

解决方案


<asp:Button ID="btnDataUpload" runat="server" Text="Upload Data" CssClass="buttonBlue" Visible="true" Width="115px" ValidationGroup="A" />
    <asp:UpdatePanel ID="MainContentUpdatePanel" runat="server">
        <ContentTemplate>
            <uc:InformationBox ID="InformationBox" runat="server" EnableViewState="true"/>
            <asp:RequiredFieldValidator ID="rvfFileUploader" runat="server" ControlToValidate="fileUploader" ErrorMessage="* Select an Excel file to upload" ForeColor="Red" ValidationGroup="A"></asp:RequiredFieldValidator>
        </ContentTemplate>
    </asp:UpdatePanel>

我认为另一种选择可能是将 InformationBox 从 UpdatePanel 中取出,并将 Button 放在面板内,并使用 defaultButton 属性。这很容易与 asp:Panels 一起使用。


推荐阅读