Проверка параметров, переданных через URL - PullRequest
1 голос
/ 07 июня 2011

Я работаю над приложением ASP.Net MVC3, и у меня возникают проблемы с пониманием «правильного способа» выполнения проверки, которую я ищу.

Например, рассмотрим модель, которая выглядит следующим образом:

    [Required]
    [StringLength(10, MinimumLength = 10)]
    [RegularExpression("[0-9]{10}")]
    public string Id { get; set; }

    [Required]
    public string Value { get; set; }

Если у меня Id «2342» и я пытаюсь выполнить POST, отображение модели включается и регистрирует ошибку из-за проверки длины. Однако, если выполнить GET для / controller / 2342, то MVC, похоже, с радостью создаст модель с этим недопустимым состоянием (ModelState.Valid будет иметь значение true). Я мог бы создать некоторые проверки в контроллере, чтобы поймать это, но это кажется излишним.

Каков наилучший способ сделать это?

Спасибо! Jacob

Ответы [ 2 ]

3 голосов
/ 07 июня 2011

Когда вы выполняете GET, вы просто извлекаете модель с заданным идентификатором.Таким образом, проверка не выполняется.Если вы действительно хотите убедиться, что запрашиваемые идентификаторы модели должны быть длиной 10 цифр, вы должны определить ограничение в Global.asax:

routes.MapRoute(
    "Product",
    "Product/{productId}",
    new {controller="Product", action="Details"},
    new {productId = @"[0-9]{10}" }
 );
1 голос
/ 07 июня 2011

В платформе нет ничего, что по умолчанию проверяет модель по запросу GET, так как проверка обычно не требуется в то время.Если вы хотите выполнить проверку здесь, на этот предыдущий вопрос был дан ответ. См .: Проверка модели по первичному запросу

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...