私はこれのviewmodelがあります、しかし、私は必要なLastName
を省略する場合なぜ検証要約がレンダリングされないのですか?
<form asp-action="Create">
<div class="form-horizontal">
<h4>PersonBindingModel</h4>
<hr />
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group">
<label asp-for="LastName" class="col-md-2 control-label"></label>
<div class="col-md-10">
<input asp-for="LastName" class="form-control" />
<span asp-validation-for="LastName" class="text-danger"></span>
</div>
</div>
</div>
...
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</div>
</form>
:
public class PersonBindingModel
{
public int Id { get; set; }
[Required]
public string LastName { get; set; }
public string FirstName { get; set; }
public int Age { get; set; }
}
と標準.NET CoreおよびEFコアパッケージによってそれのためにスキャフォールドCreate
ビューの関連部分を私はその入力の下で妥当性確認メッセージを得るだけで、妥当性検査の要約は全くレンダリングされません。私のプロジェクトの他のすべてのフォームでは、サマリーだけでなく、LastName
入力のメッセージが表示されます。私が追加した無関係のカスタム検証と共に、検証コントローラ側結合モデルをテストしていたように、私は、、すなわち_ValidationScriptsPartial
をクライアント側の検証が省略されている
<form action="/persons/Create" method="post">
<div class="form-horizontal">
<h4>PersonBindingModel</h4>
<hr>
<div class="form-group">
<label class="col-md-2 control-label" for="LastName">LastName</label>
<div class="col-md-10">
<input class="form-control input-validation-error" type="text" data-val="true" data-val-required="The LastName field is required." id="LastName" name="LastName" value="">
<span class="text-danger field-validation-error" data-valmsg-for="LastName" data-valmsg-replace="true">The LastName field is required.</span>
</div>
</div>
...
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default">
</div>
</div>
</div>
...
</form>
:これは、レンダリングされたフォームです。フォームは、カスタム検証の有無にかかわらず同じようにレンダリングされます。
レンダリングされたHTMLでは、あなたが不足しているLastName
がModelState
エラーが発生しました、と私はいつもそれがある限りModelState
は、モデル誤差が含まれているとして、このような形で印象の下にされている、入力名を持つ、すなわち1のはっきりと見ることができますキーとして、検証要約をレンダリングする必要があります。それはなぜですか?私はそれはあなたがキーが空の文字列であること「にModelState」
ModelState.AddModelError(string.Empty, x.Description)
注にエラーを追加する方法だと思います。この特定のケースでは、これが「ModelOnlyは」知っているか
あなたは=「すべて」 'ASP-検証サマリーでみました「ALLは」プロパティエラーとしてカウントされます、そして専用モードで表示されます'? –
@StephenMueckeすべての 'All'オプションは空のプロパティ名キーで追加したインクルードメッセージです。私は実際に有効なキーでエラーが表示されない理由を知りたいので、実際には 'ModelOnly'だけに興味があります。しかし、とにかく試してみるよ、ありがとう。 – ProfK
'ASP-検証サマリーは= "すべて"' '@ Html.ValidationSummary(偽)'と 'ASP-検証サマリー= "ModelOnly" に相当'に相当 '@ Html.ValidationSummary(真)' –