Проблема с вашим кодом
Ваш код недействителен, потому что в состоянии вашей модели всегда будет как минимум 4 ошибки. Даже если URL будет правильным. Ваш код требует, чтобы ваш URL имел все расширения , что, конечно, неверно. Это может быть только один. Максимум.
Решение
Вместо этого используйте DataAnnotations
и используйте валидатор регулярных выражений. Вы, очевидно, уже используете некоторый класс модели приложения под названием ArticleToCreate
. Вам нужно будет поместить атрибут аннотации данных в свойство image
(еще одно замечание: ключевые имена свойств с регистром Pascal, таким же, как .net):
public class ArticleToCreate
{
[RegularExpression(@"...")] // add regular expression that fulfils your requirements
public string Image { get; set; }
...
}
Тогда все зависит от сложности вашего регулярного выражения. Самым простым для ваших нужд может быть только то, что он начинается с http:// и заканчивается правильным расширением:
^http:\/\/.+\.(?:png|jpe?g|gif|bmp)$
И если вы напрямую предоставляете свой экземпляр класса для действия контроллера, он будет автоматически проверен для вас без какого-либо дополнительного кода. Таким образом, вы не сможете забыть для проверки ваших объектов вручную.
Рассмотрим это действие контроллера, которое автоматически проверяет ваш экземпляр объекта класса модели с помощью определенных для него валидаторов (согласно описанию валидатора, которое я написал выше):
public ActionResult Create(ArticleToCreate data)
{
if (!this.ModelState.IsValid)
{
// handle invalid object
}
// handle valid object
}
Таким образом, ваши действия будут сосредоточены на части обработки, которая является их главной целью, вместо того, чтобы фокусироваться на слишком многих аспектах вашего бизнес-процесса, таких как проверка, например.
Более короткий код = более простой код = легче поддерживать = меньше ошибок = меньше работы = счастливые клиенты