Это первое, что я использовал asp.net mvc webApi, и у меня есть методы Post/Put, которые имеют параметр ProductViewModel. Некоторые свойства этого ViewModel имеет аннотации данных по подтверждению таких как Required
, StringLenght
и т.д ... У меня есть метод столба, как это:Как заставить ModelState работать на asp.net mvc web api?
public HttpResponseMessage Post([FromBody] ProductViewModel value)
{
if (ModelState.IsValid)
{
// persist data here...
return Request.CreateResponse(HttpStatusCode.OK);
}
return Request.CreateResponse(HttpStatusCode.BadRequest, ModelState.GetErrors());
}
У меня есть метод GetErrors()
как расширение, чтобы получить List<>
моих ошибок и передать клиенту. Мой вопрос: почему ModelState не работает?
Если я передаю null в свойство моего ViewModel, эта проверка просто не работает. IsValid
Недвижимость всегда true
. Есть ли способ обойти это и получить работу ModelState, такую как MVC?
Моя модель выглядит следующим образом:
public class ProductViewModel
{
[Display(ResourceType = typeof(Resources.Global), Name = "Name")]
[Required(ErrorMessageResourceType = typeof(Resources.Global), ErrorMessageResourceName = "Required")]
[StringLength(100, ErrorMessageResourceType = typeof(Resources.Global), ErrorMessageResourceName = "Range")]
public string Name { get; set; }
[Display(ResourceType = typeof(Resources.Global), Name = "ShortName")]
[Required(ErrorMessageResourceType = typeof(Resources.Global), ErrorMessageResourceName = "Required")]
[StringLength(20, ErrorMessageResourceType = typeof(Resources.Global), ErrorMessageResourceName = "Range")]
public string ShortName { get; set; }
}
Спасибо.
Да, я пропусканием 'Content-Type: применение/json' по Скрипач, правильно ли это? Я получаю свой объект 'ProductViewModel', построенный и заполненный свойствами, но ModelState.IsValid всегда прав, не имеет значения, есть ли свойства с REquired, null,' IsValid' всегда истинно. это ошибка asp.net mvc webapi? –
тип контента выглядит правильно ... можете ли вы рассказать, как выглядит ваша модель, а также может быть необработанный запрос от Fiddler? –
Я отредактировал свой пост, взгляните на мою модель, только два свойства с некоторыми валидациями. В jSon у меня есть скрипт: '{Name: null, ShortName:" "}', просто чтобы проверить проверки, но он проверяет, я получаю другие исключения из моих инструментов ORM (nhibernate). –