MVC4 ViewModel [必需]注释不能与UIHINT一起用于KendoUI下拉列表

时间:2014-02-28 11:46:57

标签: 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,位于EditorTemplates目录下的共享下的Views文件夹中。像这样KendoDropDownList

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

问题在于,尽管我在上面的属性中添加了[Required]注释,尽管我也添加了Range注释来解决这个问题;它仍然无法验证 - 将零值设置为选项标签!

我尝试删除OptionLabel并将新项目添加到列表中,其值超出设定范围,例如:

new DropDownListItem{Text = "Select", Value = "1564"},

但是这仍然没有验证,1564的值进入控制器进入数据库!

为什么PartialView UIHINT不会'遵守'视图模型上的验证注释的任何想法?

请告诉我们..

非常感谢。

1 个答案:

答案 0 :(得分:0)

它是否适用于常规TextBox Html助手,您是否看到了验证?如果确实如此,那么我认为唯一的问题是你正在为小部件使用不同的名称。

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

或使其成为通用的,因此它与您使用该编辑器模板编辑的属性的名称相同

e.g。

@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"}
            }
))