2017-11-23 19 views
1

データを入力するためのフォームを作成したASP.NETコア2.0アプリケーションで作業しています。検証が機能するかどうかを確認しながら、私のビューモデルの必須プロパティーに表示される検証メッセージがないことに気付きました。asp.netコア2.0フォーム検証中にメッセージが表示されない

必要な入力が空で保存を押すと続行できないため、入力は必須ですが表示されるメッセージはありません。

フォームビューのビューモデルには、フォームの一部を動的に変更する必要があるため、プロパティとしてのビューモデルのリストがあります。

これは私のメインのビューモデルである:ここで

public class SettingsViewModel 
{ 
    public List<KeyValueViewModel> KeyValuePairs { get; set; } 
    public string Description { get; set; } 
} 

はここKeyValueViewModel

public class KeyValueViewModel 
{ 
    public int Id { get; set; } 
    [Display(Name = "Key")] 
    [Required(ErrorMessage = "Key is required")] 
    public string Key { get; set; } 
    [Display(Name = "Value")] 
    [Required(ErrorMessage = "Value is required")] 
    public string Value { get; set; } 

    public Guid SettingFileId { get; set; } 
    public Dictionary<Guid, string> SettingFileDropdownOptions { get; set; } 
} 

あるメインビューされています

@model SettingsViewModel 
<form asp-action="Create" id="SettingsForm"> 
    <div asp-validation-summary="ModelOnly" class="text-danger"></div> 
    <div class="row"> 
     <div class="col-md-12"> 
      <label asp-for="@Model.KeyValuePairs[0].Key" class="control-label col-md-3 no-left-padding"></label> 
      <label asp-for="@Model.KeyValuePairs[0].Value" class="control-label col-md-offset-1 no-left-padding"></label> 
     </div> 
    </div> 
    @for (var i = 0; i < Model.KeyValuePairs.Count; i++) 
    { 
     var keyValuePair = Model.KeyValuePairs[i]; 
     keyValuePair.Id = i; 
     <div id="KeyValuePairsContainer"> 
      @Html.Partial("_settingKeyValue", keyValuePair) 
     </div> 
    } 
    <div class="form-group col-md-12 no-left-padding"> 
     <label asp-for="Description" class="control-label"></label> 
     <textarea asp-for="Description" class="form-control" ></textarea> 
     <span asp-validation-for="Description" class="text-danger"></span> 
    </div> 
    <div class="form-group col-md-12 no-left-padding"> 
     <input type="submit" value="Opslaan" class="btn btn-primary" id="Submit" /> 
     <a href="@Url.Action("Index", "Home")" class="btn btn-default" id="Cancel">Annuleren</a> 
    </div> 
</form> 

そして、ここでレンダリングされる部分図:

@model KeyValueViewModel 
<div class="form-group col-md-4 no-left-padding"> 
    <input asp-for="@Model.Key" class="form-control col-md-3" id="[email protected]" name="KeyValuePairs[@Model.Id].Key" required="required"/> 
    <span asp-validation-for="@Model.Key" class="text-danger"></span> 
</div> 
<div class="form-group col-md-4 no-left-padding"> 
    <input asp-for="@Model.Value" class="form-control col-md-3" id="[email protected]" name="KeyValuePairs[@Model.Id].Value" required="required" /> 
    <span asp-validation-for="@Model.Value" class="text-danger"></span> 
</div> 

キーと値のプロパティの検証メッセージは、必要なときに表示されません。私たちは、必要なタグにメッセージを追加することによって、SettingsViewModelのDescriptionプロパティをテストしました。これはうまくいきました。

メインビューに表示されるKeyValueViewModelの検証メッセージを取得するにはどうすればよいですか?それは

+0

である必要があります。部分ビューの中に 'jquery.validate.js'を含めようとしましたか?私のメインビューで – Manoj

+0

Iは標準@sectionスクリプト有する{@ を{Html.RenderPartialAsync(「_ ValidationScriptsPartial」)待つ;}} jquery.valide.jsライブラリ – Jeroen

+0

は部分図のdoesnに同じコードを追加含ま コード – Jeroen

答えて

0

asp-validation-for

代わりの

プロパティ名を受け入れるべきであるとき

編集

<span class="text-danger field-validation-valid" data-valmsg-for="Key" data-valmsg-replace="true"></span> 

は、クラス= "フィールド検証エラー" に更新されません

<span asp-validation-for="@Model.Value" class="text-danger"></span> 

<span asp-validation-for="Value" class="text-danger"></span> 
+0

これを試してみましたが、残念ながら問題を解決していません – Jeroen

+0

@Jeroenは、 tchelidze

+0

はい、私はしました。キーと同じです – Jeroen

関連する問題