C# kendoUI multiselect上的验证不起作用
我正在使用MVC4创建一个表单。 在这里,我使用kendo 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
@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;}