У меня есть приложение ASP.NET MVC3, которое использует объекты, созданные из базы данных. У каждой сущности также есть отдельный разделяемый класс, который использует атрибут MetadataType для связывания каждой сущности с классом, снабженным рядом атрибутов проверки (см. ниже).
[MetadataType(typeof(Drawing.Metadata))]
public partial class Drawing
{
private sealed class Metadata
{
[Required]
[StringLength(50, MinimumLength = 3, ErrorMessage = "Drawing numbers must be between {2} and {1} characters in length.")]
[DisplayName("Drawing number")]
public string Number { get; set; }
[Required]
[StringLength(255, MinimumLength = 3, ErrorMessage = "Drawing titles must be between {2} and {1} characters in length.")]
public string Title { get; set; }
}
}
Мой код контроллера выглядит так:
[HttpPost]
public ActionResult Create(Drawing drawing)
{
if (ModelState.IsValid)
{
// Save to database here...
return RedirectToAction("Index");
}
else
{
return View(drawing);
}
}
Я использовал шаблоны Visual Studio для создания представлений для добавления, редактирования и удаления объектов (код дизайнера не был изменен).
Проблема, с которой я сталкиваюсь, заключается в том, что при создании объекта проверка работает только в том случае, если у меня включена проверка на стороне клиента. Если я отключу проверку на стороне клиента, то ModelState.IsValid всегда будет возвращать значение true и вернет меня на страницу индекса.
Может ли кто-нибудь дать какие-либо предложения о том, как заставить проверку на стороне сервера работать с объектами Entity Framework?
ОБНОВЛЕНИЕ:
Кажется, этот вопрос похож на мой. Автор этого поста, похоже, решил проблему, но, скорее, бесполезно не упомянул, как они решили проблему...