ASP.NET MVC 2 - обработка файлов в действии редактирования; Или можно создать аннотацию данных «Необязательно», которая пропускала бы другие атрибуты? - PullRequest
2 голосов
/ 27 августа 2011

У меня возникла небольшая проблема с дизайном, и мне любопытно, сталкивался ли кто-нибудь с чем-то похожим.

У меня есть довольно сложная модель, для которой у меня есть метод действия Edit.Каждый отдельный объект имеет два изображения, связанных с ним, наряду с другими, более приземленными данными.Эти изображения [Required] при создании.Однако при редактировании сущности эти изображения уже существуют, поскольку, опять же, они были необходимы при создании.Таким образом, мне не нужно помечать их как обязательные.

Добавление небольшого гаечного ключа ко всему этому - мой собственный атрибут проверки изображения:

public class ValidateFileAttribute : ValidationAttribute
{
    public override bool IsValid(object value)
    {
        var file = value as HttpPostedFileBase;

        if (file == null)
        {
            return false;
        }

        string[] validExtensions = { "jpg", "jpeg", "gif", "png" };
        string[] validMimeTypes = { "image/jpeg", "image/pjepeg", "image/gif", "image/png" };

        string[] potentialFileExtensions = file.FileName.Split('.');
        string lastExtension = potentialFileExtensions[(potentialFileExtensions.Length - 1)];
        string mimeType = file.ContentType;

        bool extensionFlag = false;
        bool mimeFlag = false;

        foreach (string extension in validExtensions)
        {
            if (extension == lastExtension)
            {
                extensionFlag = true;
            }
        }

        foreach (string mt in validMimeTypes)
        {
            if (mt == mimeType)
            {
                mimeFlag = true;
            }
        }

        if (extensionFlag && mimeFlag)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
}

Что бы яв идеале было бы создать какой-то атрибут [Optional], который бы вообще обходил валидатор изображения, если новые файлы не размещаются вместе с остальными данными формы.

Возможно ли что-то подобное?Если нет, то как бы коллективная мудрость переполнения стека решила проблему?

1 Ответ

1 голос
/ 27 августа 2011

Вас может заинтересовать следующая статья ... но я должен сказать, что согласен с большинством в статье.

в основном часть: условная проверка

http://andrewtwest.com/2011/01/10/conditional-validation-with-data-annotations-in-asp-net-mvc/

надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...