2016-08-15 3 views
3

Я использую новую структуру MVC6 с Visual Studio 2015, и внезапно все мои аннотации данных перестали работать. Все они, без меня, меняют код.ModelState.IsValid всегда верно, независимо от атрибутов DataAnnotations

public sealed class RegisterUser 
{ 
    [Required(ErrorMessage = "required")] 
    [RegularExpression(@"^((.|\n)*)$", ErrorMessage = "regex")] 
    [StringLength(32, MinimumLength = 3, ErrorMessage = "length")] 
    public string Name { get; set; } 

    ... 
} 

И

[Route(Address + "/membership")] 
public class MembershipController : Controller 
{ 
    // POST [address]/membership/register 
    [AllowAnonymous] 
    [HttpPost("Register")] 
    public IActionResult Register([FromBody]RegisterUser model) 
    { 
     // Validate the input model. 
     if (model == null) 
      return ... 

     if (!ModelState.IsValid) 
      return ... 

     // Always get HERE 
    } 
} 

Почему, на земле, я пройти тест "ModelState.IsValid" (он всегда истинен)?

Например, я передаю Name = "x", и он по-прежнему оценивает значение true. Как будто аннотаций там нет.

Это связано с использованием MvcCore?

ответ

8

Разочарование, так оно и есть, я забыл, что переход на «основной» проект вытесняет многие общие функции. И так, в Startup.cs, добавьте

  • services.AddMvc()

или

  • services.AddMvcCore().AddDataAnnotations()

В зависимости от вашего использования.

+0

Большое спасибо! –