Мой ORM (LightSpeed) генерирует это для таблицы животных с именем и возрастом. Использование MVC3 и Razor
[Serializable]
[System.CodeDom.Compiler.GeneratedCode("LightSpeedModelGenerator", "1.0.0.0")]
[System.ComponentModel.DataObject]
[Table(IdColumnName="AnimalID", IdentityMethod=IdentityMethod.IdentityColumn)]
public partial class Animal : Entity<int>
{
[ValidatePresence]
[ValidateLength(0, 50)]
private string _name;
[ValidateComparison(ComparisonOperator.GreaterThan, 0)]
private int _age;
public const string NameField = "Name";
public const string AgeField = "Age";
[System.Diagnostics.DebuggerNonUserCode]
[Required] // ****I put this in manually to get Name required working
public string Name
{
get { return Get(ref _name, "Name"); }
set { Set(ref _name, value, "Name"); }
}
[System.Diagnostics.DebuggerNonUserCode]
public int Age
{
get { return Get(ref _age, "Age"); }
set { Set(ref _age, value, "Age"); }
}
С добавленным атрибутом [Обязательный]:
Без добавленного атрибута [Required]: (обратите внимание на странную визуализацию проверки LightSpeed)
С заполненным именем:
На изображениях выше проверка вверху — это LightSpeed (помещена в ValidationSummary), а сбоку — MVC3 (помещена в ValidationMessageFor).
В настоящее время я использую только проверку на стороне сервера.
Вопрос. Как добиться, чтобы проверка LightSpeed хорошо работала в MVC3?
Я думаю, что это что-то в этой области http://www.mindscapehq.com/staff/jeremy/index.php/2009/03/aspnet-mvc-part4/
Для проверки на стороне сервера вам нужно будет использовать пользовательское связывание модели, которое более точно выдает ошибки проверки LightSpeed, а не использует поведение DefaultModelBinder. Взгляните на прямое использование или адаптацию EntityModelBinder из библиотеки кода сообщества для Mvc.