Asp.Net MVC 3 Действие Параметры результата и проверка данных: все ли примитивные свойства должны быть строковыми? - PullRequest
0 голосов
/ 17 марта 2011

Проверка формы с аннотациями данных с использованием MVC.

Нужно ли определять все свойства параметра входного объекта как строку с аннотациями данных, чтобы можно было проверить состояние модели на предмет ошибок илиЯ просто использую собственные типы данных для объектов?

Я создал множество моделей «функций управления» в привязке, которые идентичны моделям представления, за исключением валидаторов Regex и «строки» для каждого поля.

Это кажется ненужной сложностью.Просто хочу убедиться, что я на правильном пути, или что модели двойных данных - это то, что MVC обычно обрабатывает в любом случае.

Например:

public class Product
{    public int     id          {get;set;}
     public string  name        {get;set;}
     public double? retailPrice {get;set;}
     [Required]
     public int     deptId      {get;set;}
     [Required]
     public bool    active      {get;set;}
}

public class Product
{    [RegularExpression(@"^\d*$", ErrorMessage = "*")]
     public string  id          {get;set;}
     public string  name        {get;set;}
     [RegularExpression(@"^\d*$", ErrorMessage = "*")]
     public string  retailPrice {get;set;}
     [RegularExpression(@"^\d+$", ErrorMessage = "*")]
     public string  deptId      {get;set;}
     [RegularExpression(@"(?i)^true$|^false$", ErrorMessage = "*")]
     public string  active      {get;set;}
}

Можно использовать первое каквходящий объект, или используйте второй и преобразуйте в первый после успешной проверки.

1 Ответ

1 голос
/ 17 марта 2011

Вы должны определить свои модели представления, чтобы иметь свойства (или поля) с правильным типом данных. Для них нет требования быть строками. Если вы определили свойство типа int, и средство связывания модели связывает с ним данные запроса, но не может привести значение к int, тогда свойство не будет установлено, и состояние модели будет указывать, что существует ошибка.

Некоторые люди хотят перерисовать страницу, но в текстовом поле все еще есть пользовательское значение, позволяющее им исправить это. Если вы используете встроенные вспомогательные методы Html, то это будет сделано для вас, так как вы увидите, есть ли ошибка состояния модели для этого поля, и, если это так, попытается найти значение из данных запроса и использовать это вместо.

...