[英]ExpressiveAnnotations RequiredIf Client Side Validation
如果數據庫IE中沒有任何內容,則安裝EA以嘗試使用參數。 這是有人第一次創作。
但是,RequiredIf永遠不會為客戶端驗證觸發,即使模型進入局部視圖時,BindingExists bool設置為false並且Xml值仍為null。
模型:
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)
當只使用普通的“必需”時,Xml Value客戶端會觸發罰款,但是使用RequiredIf無法進行任何驗證。 我遵循了Global.asax的isntallation步驟
您的HTML未按預期生成。 因此,模型綁定器無法正確理解序列化形式,無法正確反序列化。
而不是部分視圖使用編輯器模板:
在Views ... \\ EditorTemplates \\目錄下移動AddParameters.cshtml模板,
更改@Html.Partial(...
調用@Html.EditorFor(model => model.AddTestStepModel.AddTestStepParametersModel, "AddParameters").
當您比較這兩個調用的輸出HTML時,您將看到
AddTestStepXmlParameterModels[0].XmlValue
, AddTestStepModel.AddTestStepParametersModel.AddTestStepXmlParameterModels[0].XmlValue
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.