データベースに何もない場合にパラメータが必要な場合にインストールされたEA、IE。誰かが何かを創造しているのは初めてです。ExpressiveAnnotations Requiredクライアントサイド検証の場合
ただし、モデルが部分ビューになっても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)
しかしRequiredIfを使用して、普通の「必須」、オフ細かいXML値クライアント側の火災を使用して任意の検証を行うことができません。私はGlobal.asaxのisntallation手順に従っています
HttpPostedFileBaseでは、RequitedIfは要件をチェックすることができず、ユーザーはファイルをアップロードせずにフォームを送信できます。 – TLBB