2016-08-15 8 views
3

私はVisual Studio 2015で新しいMVC6フレームワークを使用しています。突然すべてのデータアノテーションが機能しなくなりました。私がコードを変更することなく、それらのすべて。ModelState.IsValidはDataAnnotations属性に関係なく常にtrueです

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" のテストを(それは常にtrueと評価)を渡すのですか?

たとえば、Name = "x"を渡していますが、それでもtrueに評価されます。あたかもアノテーションがそこにないかのように。

MvcCoreの使用に関連していますか?

答えて

8

「コア」プロジェクトに変更することは、共通の機能の多くを取り除くことを忘れていました。だから、Startup.csで、使用状況に応じて、

  • services.AddMvc()

または

  • services.AddMvcCore().AddDataAnnotations()

を追加します。

+0

ありがとうございます! –

関連する問題