我正在尝试使用.Net FileUpload控件以及Regex验证器来限制文件名为JPG、GIF或PNG扩展名。在回发后,控件中的文件名消失了(如预期),但这似乎会导致验证器触发并显示其错误文本。
有人可以建议一个解决方案或更好的方法吗?谢谢!
我正在尝试使用.Net FileUpload控件以及Regex验证器来限制文件名为JPG、GIF或PNG扩展名。在回发后,控件中的文件名消失了(如预期),但这似乎会导致验证器触发并显示其错误文本。
有人可以建议一个解决方案或更好的方法吗?谢谢!
只需使用自定义验证器,并使用以下 JavaScript 函数:
function UploadFileCheck(source, arguments)
{
var sFile = arguments.Value;
arguments.IsValid =
((sFile.endsWith( .jpg )) ||
(sFile.endsWith( .jpeg )) ||
(sFile.endsWith( .gif )) ||
(sFile.endsWith( .png )));
}
自定义验证器代码:
<asp:CustomValidator ID="cvalAttachment" runat="server" ControlToValidate="upAttachment" SetFocusOnError="true" Text="*" ErrorMessage="Invalid: File Type (allowed types: jpg, jpeg, gif, png)" ClientValidationFunction="UploadFileCheck"></asp:CustomValidator>
那应该是你需要在客户端停止提交之前的所有内容。
使用自定义验证程序进行此检查,并在处理上传的方法中调用Page.IsValid,如果文件没有有效的扩展名,则会停止上传的处理。
JavaScript 没有“endsWith”,因此请使用此代码作为自定义验证器:
function UploadFileCheck(source, arguments)
{
var sFile = arguments.Value;
arguments.IsValid =
((sFile.match(/.jpe?g$/i)) ||
(sFile.match(/.gif$/i)) ||
(sFile.match(/.bmp$/i)) ||
(sFile.match(/.tif?f$/i)) ||
(sFile.match(/.png$/i)));
}
使用自定义验证程序太长了。相反,您可以在上传按钮的单击事件中设置正则表达式的 IsValid 属性。
http://blogs.cametoofar.com/post/aspnet-regular-expression-validator-firing-after-postback.aspx的翻译: