我在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
不会'遵守'视图模型上的验证注释的任何想法?
请告诉我们..
非常感谢。
答案 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"}
}
))