Asp.net mvc 4 MVC4 ViewModel[Required]注释不适用于KendoUI下拉列表的UIHINT

Asp.net mvc 4 MVC4 ViewModel[Required]注释不适用于KendoUI下拉列表的UIHINT,asp.net-mvc-4,kendo-ui,viewmodel,Asp.net Mvc 4,Kendo Ui,Viewmodel,我在ViewModel中具有以下属性: [UIHint("AccessDropDown")] [Display(Name ="Access Level")] [Range(1, 2, ErrorMessage = "Required.")] public int InternalUserAccess { get; set; } AccessDropDown是一个PartialView,它位于视图文件夹中的shared、EditorTemplates目录下。它是一个KendoDropDownLi

我在ViewModel中具有以下属性:

[UIHint("AccessDropDown")]
[Display(Name ="Access Level")]
[Range(1, 2, ErrorMessage = "Required.")]
public int InternalUserAccess { get; set; }
AccessDropDown是一个
PartialView
,它位于视图文件夹中的shared、EditorTemplates目录下。它是一个
KendoDropDownList
如下所示:

@(Html.Kendo().DropDownList().Name("UserAccess").OptionLabel("Select")
.BindTo(new List<DropDownListItem>
            {
                new DropDownListItem{Text = "User", Value = "1"},
                new DropDownListItem{Text = "Admin", Value = "2"}
            }
))
但这仍然没有验证,1564的值进入控制器并输入数据库

你知道为什么带有
UIHINT
PartialView
不会“遵守”视图模型上的验证注释吗

请让我们知道


非常感谢

它是否与常规的文本框Html助手一起工作,您是否看到了验证?如果是这样的话,我会假设唯一的问题是您正在为小部件使用不同的名称

尝试将名称设置为.name(“InternalUserAccess”)

或者将其设置为泛型,使其与使用该编辑器模板编辑的属性的名称相同

e、 g

@model int
@(Html.Kendo().DropDownListFor(m=>m).OptionLabel(“选择”)
.BindTo(新列表)
{
新的DropDownListItem{Text=“User”,Value=“1”},
新的DropDownListItem{Text=“Admin”,Value=“2”}
}
))

首先,验证dropdownlist的概念是错误的。您没有验证用户输入您选择了此选项,并让他们从下拉列表中选择…简单的是..我不认为您可以使用DataAnnotation以正常方式验证下拉列表值…@Shaz那么我如何验证下拉列表中的用户选择,当给出的选项之一仅显示“请选择”消息时,您只需不填写.options标签(“请选择”)…dropdownlist将默认为您设置第一个选项…如果没有选择,您必须显示“请选择”然后验证表单submitt mate上的控件…@Shaz,据我所知,默认情况下不会设置OptionLabel。我将尝试使用JavaScript对表单提交进行验证。谢谢。为了更清楚地显示“请选择”字符串,它是否来自DB。。???我以为您正在使用@(Html.Kendo().DropDownListFor(m=>m.workOrder.ClientName).DataTextField(“Text”).DataValueField(“Value”).HtmlAttributes(新的{style=“width:500px;”).OptionLabel(“选择客户端…”此dropdownlist所在的表单由Kendo UI网格“创建”按钮从网格的视图模型自动生成。我已尝试将UIHINT中的dropdownlist重命名为InternatlUserAccess,但不幸没有帮助。谢谢。
new DropDownListItem{Text = "Select", Value = "1564"},
@model int

@(Html.Kendo().DropDownListFor(m=>m).OptionLabel("Select")
.BindTo(new List<DropDownListItem>
            {
                new DropDownListItem{Text = "User", Value = "1"},
                new DropDownListItem{Text = "Admin", Value = "2"}
            }
))