我试图在自定义编辑器模板中删除此组合框的验证:
...
@{
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.`
我对验证 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。
注意:我还没有测试过这个,正如我所说,我对此事不是很熟悉,但这对我来说似乎是合乎逻辑的。