2016-08-25 29 views
0

如果數據庫IE中沒有任何內容,則嘗試安裝參數以便安裝EA。這是有人第一次創造一些東西。如果客戶端驗證需要表達註釋

但是,即使模型進入部分視圖時,RequiredIf也不會觸發客戶端驗證,但BindingExists布爾值設置爲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值客戶端打完正常,但是使用RequiredIf不能做任何確認。我已經使用Global.asax跟蹤了isntallation步驟

回答

0

您的HTML未按預期方式生成。由於這一點,序列化表單不能被模型聯編程序正確理解,因此無法正確反序列化。

而是局部視圖中使用編輯器模板:

  • 動下提出的意見AddParameters.cshtml模板... \ EditorTemplates \目錄下,

  • 變化@Html.Partial(...調用到@Html.EditorFor(model => model.AddTestStepModel.AddTestStepParametersModel, "AddParameters").

當您比較這兩個調用的輸出HTML時,您會看到

  • 短輸入字段名稱爲局部視圖:AddTestStepXmlParameterModels[0].XmlValue,而相比之下,編輯模板呈現全名,使用的粘結劑,以各自的字段映射
  • AddTestStepModel.AddTestStepParametersModel.AddTestStepXmlParameterModels[0].XmlValue
+0

我已經證實,RequiredIf驗證現在用於模型的一些屬性(我創建了一個測試字符串,並使用相同的邏輯作爲XML參數和它的作品) 然而,試圖使用它的時候HttpPostedFileBase,RequitedIf無法檢查需求並允許用戶在不上傳文件的情況下提交表單。 – TLBB