2017-10-11 14 views
2

私は剣道UIをASP.NET MVCに使用しています。私は列内にいくつかのClientEditorTemplate DropDownListsを持つインライン編集モードの剣道グリッドを持っています。グリッドはモデル "ContractPricingPolicy"のリストにバインドされています。inline編集モードでの剣道検証メッセージ剣道グリッドがデータアノテーションなしで処理されています

public class ContractPricingPolicy 
{ 
    //Some other fields 

    [CustomDisplayName(XmlResourceNames.ContractPricingPoliciesXml, "PricingPolicyType")] 
    [UIHint("ClientPricingPolicyType")] 
    [Required(ErrorMessage = "Tο πεδίο {0} είναι υποχρεωτικό")] 
    public PricingPolicyType PricingPolicyType { get; set; } 

    //Some other fields 
} 

あなたは私がEditorTemplateためUIHintを使用して、私は私のフィールドの検証に必要なデータアノテーションを使用見ることができるように。 エディタテンプレートはそのようなものです:

@(Html.AthenaTransportDdl("GetPricingPolicyTypes", "Enterprise", HttpVerbs.Post) 
    .Name("PricingPolicyType") 
    .DataTextField("Label") 
    .DataValueField("Id") 
    .AutoBind(false) 
    .Filter("contains") 
    .HtmlAttributes(new { @class = "atn-flexdisplay-container" }) 
    .OptionLabel(Html.GetResource(AthenaWeb.Models.Common.XmlResourceNames.CommonXml, "PricingPolicyTypeOptionLabel")) 
) 

私の剣道グリッドはそのようなものです:私は、新しい行を挿入し、価格政策は検証を入力し、選択せずに私の行を保存しよう

@(Html.Kendo().Grid(Model.PricingPolicies) 
     .Name("pricingPoliciesGrid") 
     .Columns(columns => 
     { 
      columns.Bound(c => c.Id).Hidden(); 
      columns.Bound(c => c.PricingPolicyType).Width(100) 
      // Some more columns 
      columns.Command(command => { command.Edit().Text(" ").UpdateText(" ").CancelText(" "); command.Destroy().Text(" "); }).Width(70) 
      .HtmlAttributes(new { style = "text-align:center" }); 
     }) 
     .ToolBar(toolbar => toolbar.Template("<div class='col-md-2'><button id='addPPRowBtn' class='btn btn-success' data-atn-mouseover='cStatusDisabled'><span class='fa fa-plus'></span> " + Html.GetResource(gcw, "ToolBarInsertNew") + "</div>")) 
     .Editable(editable => editable.Mode(GridEditMode.InLine).DisplayDeleteConfirmation(Html.GetResource(cpp, "DeleteConfirmationMsg"))) 
     .DataSource(dataSource => dataSource 
      .Ajax() 
      .ServerOperation(true) 
      .Model(model => 
      { 
       model.Id(c => c.Id); 
       model.Field(p => p.PricingPolicyType).DefaultValue(new AthenaWeb.Models.Enterprise.PricingPolicyType()); 
       // Some other fields 
      }) 
     .Create(create => create.Action("PricingPolicy_Create", "Student")) 
     .Read(read => read.Action("PricingPolicy_Read", "Student", new { id = Model.Id })) 
     .Destroy(update => update.Action("PricingPolicy_Deactivate", "Student")) 
     ) 
    ) 

データ注釈からのデータはトリガーされません。しかし、私はそのように私のエディタのテンプレートに必要な属性を設定した場合:

(Html.AthenaTransportDdl("GetPricingPolicyTypes", "Enterprise", HttpVerbs.Post) 
    .Name("PricingPolicyType") 
    .DataTextField("Label") 
    .DataValueField("Id") 
    .AutoBind(false) 
    .Filter("contains") 
    .HtmlAttributes(new { @class = "atn-flexdisplay-container", required = "required" }) 
    .OptionLabel(Html.GetResource(AthenaWeb.Models.Common.XmlResourceNames.CommonXml, "PricingPolicyTypeOptionLabel")) 
) 

検証トリガーのが、表示されるメッセージは、私は私のデータ注釈にメッセージを表示する必要がありながら、フィールド{NameOfField}が必要されるデフォルトです。

私の質問は、なぜデータアノテーション検証メッセージを表示できるのか(正確には、エディタテンプレートにバインドされたフィールドの行に対してkendoValidatorをトリガする方法です)

検証はエディタテンプレートを使用して列のために機能するためには

答えて

0

あなたは

()
ViewData.ModelMetadata、Html.GetUnobtrusiveValidationAttributes(「検証」)あなたのエディタテンプレート

.HtmlAttributesに以下を追加する必要があります10

関連する問題