gpt4 book ai didi

c# - ASP.net RegularExpressionValidator 即使输入无效也允许回发

转载 作者:行者123 更新时间:2023-11-30 22:21:38 35 4
gpt4 key购买 nike

我正在尝试制作一个用于上传图片的表单。我放置了一个 RegularExpressionValidator 来检查所选文件的扩展名。它的 ValidationExpression 是:

(?i:^.+(.jpg|.ttf|.png|.gif)$)

但是当我选择一个 .exe 文件时。该页面执行回发,然后向我显示错误。并且 .exe 文件存储在不应该存储的位置。

这是我的控件的 HTML 代码:

<%@ Page Title="" Language="C#" MasterPageFile="~/filippo_admin_page/admin_master.Master" AutoEventWireup="true" CodeBehind="a_gallery.aspx.cs" Inherits="photography.filippo_admin_page.a_gallery" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
<link rel="Stylesheet" type="text/css" href="css/a_gallery.css" />
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<div id="whole_wrapper">
<fieldset>
<legend>Insert new image:</legend>
<div id="controls_wrapper">
<ul>
<li>
<asp:Label AssociatedControlID="title_txt" runat="server" ID="title_lbl">Title:</asp:Label>
<asp:TextBox ID="title_txt" runat="server" placeholder="Image title"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
ControlToValidate="title_txt" ErrorMessage="RequiredFieldValidator"
ForeColor="Red" ValidationGroup="gallery_validation">Required!</asp:RequiredFieldValidator>
</li>
<li>
<asp:Label AssociatedControlID="desc_txt" runat="server" ID="desc_lbl">Description:</asp:Label>
<asp:TextBox ID="desc_txt" runat="server" placeholder="Image description" TextMode="MultiLine"></asp:TextBox>
</li>
<li>
<asp:Label AssociatedControlID="cat_txt" runat="server" ID="cat_lbl">Category:</asp:Label>
<asp:TextBox ID="cat_txt" runat="server" placeholder="Image category"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server"
ControlToValidate="cat_txt" ErrorMessage="RequiredFieldValidator"
ForeColor="Red" ValidationGroup="gallery_validation">Required!</asp:RequiredFieldValidator>
</li>
<li>
<asp:Label ID="upload_lbl" runat="server">Select Image:</asp:Label>
<asp:FileUpload ID="upload_pnl" runat="server" />
<asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server"
ControlToValidate="upload_pnl" ErrorMessage="RequiredFieldValidator"
ForeColor="Red" ValidationGroup="gallery_validation">Required!</asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server"
ControlToValidate="upload_pnl" ErrorMessage="RegularExpressionValidator"
ForeColor="Red" ValidationExpression="(?i:^.+(.jpg|.ttf|.png|.gif)$)"
ValidationGroup="gallery_validation">File must be an image.</asp:RegularExpressionValidator>
</li>

<li>
<asp:Button ID="clear" runat="server" Text="Clear" UseSubmitBehavior="False" />
<asp:Button ID="submit" runat="server" Text="Upload" onclick="submit_Click"
ValidationGroup="gallery_validation"/>
</li>
</ul>
</div>
<asp:Label ID="msg_lbl" Visible="false" runat="server"></asp:Label>
</fieldset>

</div>
</asp:Content>

这是验证器的一部分:

<li>
<asp:Label ID="upload_lbl" runat="server">Select Image:</asp:Label>
<asp:FileUpload ID="upload_pnl" runat="server" />
<asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server"
ControlToValidate="upload_pnl" ErrorMessage="RequiredFieldValidator"
ForeColor="Red" ValidationGroup="gallery_validation">Required!</asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server"
ControlToValidate="upload_pnl" ErrorMessage="RegularExpressionValidator"
ForeColor="Red" ValidationExpression="(?i:^.+(.jpg|.ttf|.png|.gif)$)"
ValidationGroup="gallery_validation">File must be an image.</asp:RegularExpressionValidator>
</li>

我有 ValidationGroup 等于 gallery_validation 并设置在我想要验证的所有控件上,包括它自己的 submit 按钮。

如果您想要文件的完整 HTML 代码,请询问。

最佳答案

您的正则表达式无效,无法在客户端正确处理。当我使用相同的正则表达式时,我的 IE9 显示错误。如果我将它切换为标准的正则表达式,一切正常。因此,有必要更改正则表达式。我会尽快将其发布在这里。

这里有问题的部分是 - ?i:它是 .NET Framework 的一部分。因此,它在客户端不起作用。更多详情,请引用

make regular expression validator case insensitive?

此链接还包含问题的解决方案。

关于c# - ASP.net RegularExpressionValidator 即使输入无效也允许回发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14222741/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com