데이터베이스에 IE가없는 경우 매개 변수가 필요하도록 설치된 EA입니다. 누군가가 뭔가를 창조 한 것은 이번이 처음입니다.ExpressiveAnnotations Required 클라이언트 측 유효성 검사가있는 경우
그러나 모델이 부분 뷰에 들어갈 때 BindingExists bool이 false로 설정되고 Xml 값이 여전히 null 인 경우에도 RequiredIf는 클라이언트 측 유효성 검사에 대해 절대 실행되지 않습니다.
모델 :
public class AddTestStepXmlParameterModel
{
public ParameterTypeEnum ParameterType { get; set; }
public string ParameterName { get; set; }
public string Description { get; set; }
[RequiredIf("BindingExists == false", ErrorMessage = "An XML File is required: Please Try again")]
[FileExtensions(Extensions = "xml", ErrorMessage = "Specify an XML file.")]
public HttpPostedFileBase XmlValue { get; set; }
public bool BindingExists { get; set; }
}
Global.asax에 :보기
protected void Application_Start()
{
ModelValidatorProviders.Providers.Remove(ModelValidatorProviders.Providers.FirstOrDefault(x => x is DataAnnotationsModelValidatorProvider));
ModelValidatorProviders.Providers.Add(new ExpressiveAnnotationsModelValidatorProvider());
}
스크립트 :
<script src="~/Scripts/jquery-3.1.0.js"></script>
<script src="~/Scripts/jquery.validate.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.js"></script>
<script src="~/Scripts/expressive.annotations.validate.js"></script>
부분보기 전화 :
@Html.Partial("AddParameters", Model.AddTestStepModel.AddTestStepParametersModel)
부분보기 :
@Html.HiddenFor(m => m.AddTestStepXmlParameterModels[k].BindingExists, new {@Value = Model.AddTestStepXmlParameterModels[k].BindingExists})
@Html.TextBoxFor(m => m.AddTestStepXmlParameterModels[k].XmlValue, new {type = "file", @class = "btn btn-default btn-file", style = "color:transparent", onchange = "this.style.color = 'black'"})
@Html.ValidationMessageFor(m => m.AddTestStepXmlParameterModels[k].XmlValue)
그러나 RequiredIf를 사용하여, 단지 보통의 "필수", 오프 미세 XML 값 클라이언트 쪽 불을 사용하여 유효성 검사를 수행하는 데 실패합니다. Global.asax와 함께 isntallation 단계를 수행했습니다.
그러나 (I 테스트 문자열을 생성하고 XML 매개 변수와 같은 논리를 사용하고 작동)는 그것을 사용하려고 할 때 HttpPostedFileBase, RequitedIf 요구 사항을 확인하는 데 실패하고 사용자가 파일을 업로드하지 않고 양식을 전송할 수 있습니다. – TLBB