2017-11-23 22 views
1

데이터를 입력 할 양식을 만든 ASP.NET 코어 2.0 응용 프로그램에서 작업하고 있습니다. 유효성 검사가 작동하는지 확인하는 동안 내 뷰 모델의 필수 속성에 대한 유효성 검사 메시지가 표시되지 않는 것으로 나타났습니다.부분보기를 사용하는 동안 asp.net 코어 2.0 양식 유효성 검사 메시지가 표시되지 않음

필요한 입력이 비어 있고 저장을 누르면 계속할 수 없으므로 입력이 필요하지만 표시 할 메시지가 없습니다.

폼의 일부를 동적으로 변경해야하기 때문에 내 폼보기의보기 모델에 속성으로보기 모델 목록이 있습니다.

내 기본보기 모델이되어

@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> 

그리고 여기에 렌더링됩니다 부분보기 : 여기

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

여기

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; } 
} 

기본보기입니다 KeyValueViewModel입니다 :

@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의 유효성 확인 메시지를 얻으려면 어떻게해야합니까?

편집

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

가해야 할 때 클래스 = "현장 검증 오류"에 업데이트되지 않습니다

+0

이어야합니다. 부분 뷰 내부에'jquery.validate.js'를 포함 시키려고 했습니까? 내 기본보기에서 – Manoj

+0

나는 표준 @section 스크립트가 {@ 을 {Html.RenderPartialAsync ("_ ValidationScriptsPartial") 기다리고;} }는 jquery.valide.js 라이브러리 – Jeroen

+0

이 부분보기 아무튼에 동일한 코드를 추가 포함 코드를 두 번 같은 라이브러리를 추가하기 때문에 작동하지 않는다고 생각합니다. – Jeroen

답변

0

asp-validation-for는 속성 이름을

대신

을 받아
<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

예. Key와 같음 – Jeroen