Kendo MVC UI Scheduler 自定义编辑器模板验证

问题描述 投票:0回答:1

我试图在自定义编辑器模板中删除此组合框的验证:

...
@{
    ViewContext.FormContext = new FormContext();
}
 
<div data-container-for="ClientId" class="k-edit-field">
    @(Html.Kendo().ComboBoxFor(model => model.ClientId)
        .HtmlAttributes(new { data_bind = "value:ClientId", id = "ClientId", data_val = false })
        .Name("ClientId")
        .DataTextField("Text")
        .DataValueField("Value")
              .DataSource(source => { source.Read(read => { read.Action("GetClientsList", "Scheduler"); }).ServerFiltering(true); })
        .Events(e =>
        {
            e.Select("onSelect");
        })
        .HtmlAttributes(new { style = "width:100%;" }))
</div>
 
@{
    ViewContext.FormContext = null;
}
...

尝试使用以下方法删除模型中的验证:

 [AllowAnyValue]
  public int? ClientId { get; set; }

public class AllowAnyValueAttribute : ValidationAttribute
    {
        public override bool IsValid(object value)
        {
            // Always return true to allow any value
            return true;
        }
    }

尝试在组合框输入中添加新文本,例如名称,我仍然收到此 Kendo 错误 留言:

 `The field ClientId must be a number.`
asp.net-mvc kendo-asp.net-mvc kendo-scheduler kendo-validator
1个回答
0
投票

我对验证 Kendo 控件不太熟悉,但在我看来,您正在为具有“Text”和“Value”字段的实体指定组合框,而您绑定的实体是一个名为“ClientId”的简单可为空 int .

添加一个 CbBoxValue 类,如下所示:

public class CbBoxValue
{
    [AllowAnyValue]
    public int? Value { get; set; }

    public string Text { get; set; }


    public CbBoxValue ( int? ClientId )
    {
        Value = ClientId;
        Text = ClientId?.ToString() ?? "";
    }
}

然后将 CbBoxValue(ClientId) 传递给组合框,而不是直接传递 ClientId。

注意:我还没有测试过这个,正如我所说,我对此事不是很熟悉,但这对我来说似乎是合乎逻辑的。

© www.soinside.com 2019 - 2024. All rights reserved.