具有Regex Validator回发问题的ASP.Net FileUpload控件

时间:2009-03-18 19:49:41

标签: asp.net regex validation controls

我正在尝试使用.Net FileUpload控件和Regex Validator将文件名限制为JPG,GIF或PNG扩展名。回发后,文件名从控件中消失(如预期的那样),但这似乎会导致验证器触发并显示其错误文本。

任何人都可以建议修复或更好的方法吗?谢谢!

4 个答案:

答案 0 :(得分:4)

只需使用具有以下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>

这应该是你需要在回发之前阻止客户端。

答案 1 :(得分:0)

使用自定义验证程序执行此检查,并在处理上载的方法中调用Page.IsValid,如果文件没有有效的扩展名,将停止处理上载。

答案 2 :(得分:0)

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))); }

答案 3 :(得分:0)

使用自定义验证器太长了。相反,您只需在上传按钮的点击事件中设置RegularExpression的 IsValid 属性。

http://blogs.cametoofar.com/post/aspnet-regular-expression-validator-firing-after-postback.aspx