gpt4 book ai didi

c# - 内联编辑模式中的剑道验证消息剑道网格无法通过数据注释工作

转载 作者:太空宇宙 更新时间:2023-11-03 12:22:11 25 4
gpt4 key购买 nike

我正在为 ASP.NET MVC 使用 kendo UI。我有一个内联编辑模式剑道网格,在我的列中有一些 ClientEditorTemplate DropDownLists。网格绑定(bind)到模型列表“ContractPricingPolicy”。

public class ContractPricingPolicy
{
//Some other fields

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

//Some other fields
}

如您所见,我将 UIHint 用于 EditorTemplate,并将 Required Data Annotation 用于验证我的字段。编辑器模板是这样的:

@(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} 是必需的,而我需要在我的数据注释中显示消息。

我的问题是为什么会发生这种情况以及如何启用显示数据注释验证消息(我猜确切的问题是如何为绑定(bind)到编辑器模板的字段的行触发 kendoValidator)

最佳答案

要使用编辑器模板对列进行验证,您需要在编辑器模板中添加以下内容

.HtmlAttributes(Html.GetUnobtrusiveValidationAttributes("验证",
ViewData.ModelMetadata))

    (Html.AthenaTransportDdl("GetPricingPolicyTypes", "Enterprise", HttpVerbs.Post)
.Name("PricingPolicyType")
.DataTextField("Label")
.DataValueField("Id")
.AutoBind(false)
.Filter("contains")
.HtmlAttributes(Html.GetUnobtrusiveValidationAttributes("Validation",
ViewData.ModelMetadata))
.OptionLabel(Html.GetResource(AthenaWeb.Models.Common.XmlResourceNames.CommonXml, "PricingPolicyTypeOptionLabel"))
)

关于c# - 内联编辑模式中的剑道验证消息剑道网格无法通过数据注释工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46691055/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com