ASP.Net FileUpload Control с проблемой обратной передачи Regex Validator - PullRequest
2 голосов
/ 18 марта 2009

Я пытаюсь использовать элемент управления .Net FileUpload вместе с валидатором Regex, чтобы ограничить имя файла расширениями JPG, GIF или PNG. После обратной передачи имя файла исчезает из элемента управления (как и ожидалось), но, похоже, это вызывает запуск валидатора и отображение текста его ошибки.

Кто-нибудь может предложить исправление или лучший способ? Спасибо!

Ответы [ 4 ]

4 голосов
/ 19 марта 2009

Просто используйте пользовательский валидатор со следующей функцией 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>

Это все, что вам нужно, чтобы остановить его на стороне клиента, прежде чем он будет отправлен обратно.

0 голосов
/ 22 апреля 2012

Использование собственного валидатора слишком долго. Вместо этого вы можете просто установить свойство IsValid выражения RegularExpression в событии click вашей кнопки загрузки.

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

0 голосов
/ 09 декабря 2009

JavaScript не имеет значения «конец с», поэтому используйте этот код для пользовательского валидатора:

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

0 голосов
/ 19 марта 2009

Используйте пользовательский валидатор, чтобы выполнить эту проверку, и вызовите Page.IsValid в методе, который обрабатывает загрузку, что остановит обработку загрузки, если файл не имеет действительного расширения.

...