C# kendoUI multiselect上的验证不起作用

C# kendoUI multiselect上的验证不起作用,c#,asp.net-mvc,asp.net-mvc-4,kendo-ui,data-annotations,C#,Asp.net Mvc,Asp.net Mvc 4,Kendo Ui,Data Annotations,我正在使用MVC4创建一个表单。 在这里,我使用kendo multiselect并尝试通过模型注释进行验证 我的代码是: @model WEBAPP.\u 2012.Models.DeviceInventory.DeviceTechnologyModel @使用(Ajax.BeginForm(“创建”、“设备技术文档”、新的AjaxOptions{HttpMethod=“POST”、OnSuccess=“onSuccessAddTechnology”})){@Html.ValidationSu

我正在使用MVC4创建一个表单。 在这里,我使用kendo multiselect并尝试通过模型注释进行验证

我的代码是:

@model WEBAPP.\u 2012.Models.DeviceInventory.DeviceTechnologyModel
@使用(Ajax.BeginForm(“创建”、“设备技术文档”、新的AjaxOptions{HttpMethod=“POST”、OnSuccess=“onSuccessAddTechnology”})){@Html.ValidationSummary(true)
型号(名称)
@Html.EditorFor(model=>model.Name)@Html.ValidationMessageFor(model=>model.Name)
@LabelFor(model=>model.Alias)
@Html.EditorFor(model=>model.Alias)@Html.ValidationMessageFor(model=>model.Alias)
@Html.LabelFor(model=>model.Vendors)/td>
@(Html.Kendo().MultiSelectFor(model=>model.Vendors).名称(“Vendors”).占位符(“Select”).BindTo(新选择列表(ViewBag.VendorList,“Value”,“Text”))@Html.ValidationMessageFor(model=>model.Vendors)
我的模型是:

    public class DeviceTechnologyModel
    {
        public int Id { get; set; }
        [Required(ErrorMessage = "*")]
        [Display(Name = "Device Technology")]
        public string Name { get; set; }
        [Required(ErrorMessage = "*")]
        [Display(Name = "Alias")]
        public string Alias { get; set; }
        [Required(ErrorMessage = "*")]
        [Display(Name = "Device vendors")]
        public List<string> Vendors { get; set; }
    }
公共类设备技术模型
{
公共int Id{get;set;}
[必需(ErrorMessage=“*”)]
[显示(Name=“设备技术”)]
公共字符串名称{get;set;}
[必需(ErrorMessage=“*”)]
[显示(Name=“Alias”)]
公共字符串别名{get;set;}
[必需(ErrorMessage=“*”)]
[显示(Name=“设备供应商”)]
公共列表供应商{get;set;}
}
当我单击“提交”按钮时,验证错误消息会同时出现在“名称”和“别名”字段上,但不会出现在“供应商”字段上


我不想使用
javascript
验证。

您需要验证值,而不是列表对象

您可能需要在模型中进行以下更改:

public class DeviceTechnologyModel
{
        public int Id { get; set; }
        [Required(ErrorMessage = "*")]
        [Display(Name = "Device Technology")]
        public string Name { get; set; }
        [Required(ErrorMessage = "*")]
        [Display(Name = "Alias")]
        public string Alias { get; set; }

        [Required]
        [Required(ErrorMessage = "*")]
        [Display(Name = "Device vendors")]
        public int VendorId { get; set; }

        public List<string> Vendors { get; set; }
}
公共类设备技术模型
{
公共int Id{get;set;}
[必需(ErrorMessage=“*”)]
[显示(Name=“设备技术”)]
公共字符串名称{get;set;}
[必需(ErrorMessage=“*”)]
[显示(Name=“Alias”)]
公共字符串别名{get;set;}
[必需]
[必需(ErrorMessage=“*”)]
[显示(Name=“设备供应商”)]
public int VendorId{get;set;}
公共列表供应商{get;set;}
}
在你看来:

<tr>
    <td>@Html.LabelFor(model => model.Vendors)/td>
      <td class="editor-field">
        @(Html.Kendo().MultiSelectFor(model=> model.VendorId)
                      .Name("Vendors").Placeholder("Select")
                      .BindTo(new SelectList(ViewBag.VendorList, "Value", "Text"))) 
       @Html.ValidationMessageFor(model => model.VendorId)
      </td>
  </tr>

@Html.LabelFor(model=>model.Vendors)/td>
@(Html.Kendo().MultiSelectFor(model=>model.VendorId)
.名称(“供应商”).占位符(“选择”)
.BindTo(新选择列表(ViewBag.VendorList,“值”、“文本”))
@Html.ValidationMessageFor(model=>model.VendorId)
确保提交表单时,
VendorId
属性是否包含任何值

如果没有,验证应该可以工作


希望能有所帮助。

不,它仍然不起作用。通过检查元素,我发现kendo隐藏了标记。在这里,模型验证消息出现在选择标记上。就像….看起来你没有传递
int
(number)值。将你的模型属性设为string并重试。例如:
公共字符串VendorId{get;set;}