Проблема в том, что вы изменяете ModelMetadata
в запросе get
на странице. Эта информация не сохраняется, когда вы post
выполняете свои действия (поскольку в MVC нет механизма ViewState
esque).
Помечен ли класс, который вы пытаетесь проверить, как partial
? Если это так, вы можете использовать классный атрибут MetadataType
, чтобы украсить класс атрибутами проверки:
[MetadataType(typeof(JobOpening_Validation))]
public partial class JobOpening
{
//JobOpening is generated by LinqToSql but I want to validate the Title Property
}
internal class JobOpening_Validation
{
[Required]
[StringLength(150, ErrorMessage = "Must be under 150 characters")]
public string Title { get; set; }
}
Используя этот класс «throwaway» (JobOpening_Validation
), мы создаем те же свойства, которые мы хотим проверить в классе «target» (JobOpening
). Любое украшение атрибутов класса «throwaway» будет скопировано в класс «target».
Если это не работает для вас, вы можете создать FilterAttribute
и переопределить метод OnActionExecuting
и выполнить там проверку вашей модели. Вы также сможете соответственно обновить состояние модели.