CustomerEntryModelASP-検証-のタグヘルパーは、サーバー側の検証エラーのために働いていない
[Required]
public String FirstName { get; set; }
CustomerController.cs
[HttpGet]
[Route("Get")]
public IActionResult Get()
{
CustomerEntryModel model = new CustomerEntryModel();
return View("CustomerEntry", model);
}
[HttpPost]
[Route("Update")]
public ActionResult Update([FromForm]CustomerEntryModel model)
{
if (!ModelState.IsValid)
{
return View("CustomerEntry", model);
}
return null;
}
CustomerEntry.cshtml
@addTagHelper "*, Microsoft.AspNet.Mvc.TagHelpers"
<form asp-controller="Customer" asp-action="Update" method="post">
<input type="text" asp-for="FirstName" />
<span asp-validation-for="FirstName" />
<input type="submit" value="Submit" />
</form>
jQuery検証ライブラリは含まれていないため、検証はサーバー側で行われます。今、最初の名前が空のページを送信すると、更新アクションが実行され、同じビューが返されますが、エラーは発生しません。
<span asp-validation-for="FirstName" />
タグヘルパーの代わりに、私がhtmlヘルパーを使用している場合、@Html.ValidationMessageFor(m => m.FirstName)
私はファーストネームに必要なエラーを取得します。
TagHelper
は、伝統的なHtmlHelper
の動作を拡張して、HTMLフレンドリーな開発体験を提供します。つまり、HtmlHelper
で動作するものは、それに対応するTagHelper
のものと動作する必要があります。
ModelState.IsValid
コールの後に、私はFirstName
プロパティのエラーを持つController.ModelState
(インスタンスは)と見ることができます。ただし、TagHelper
はバインドできません。このような
<span asp-validation-for="FirstName" />
:
あなたがここにMVC6検証タグヘルパーの詳細を見つけることができ、
http://www.davepaquette.com/archive/2015/05/14/mvc6-validation-tag-helpers-deep-dive.aspx
これはフレームワークの登録された問題です。https://github.com/aspnet/Mvc/issues/4475 –