我在ViewModel中有以下属性:
[UIHint("AccessDropDown")]
[Display(Name ="Access Level")]
[Range(1, 2, ErrorMessage = "Required.")]
public int InternalUserAccess { get; set; }
AccessDropDown 是一个PartialView
,它位于 Views 文件夹中,在 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"}
}
))
问题是,尽管我在上述属性上添加了[Required]
注释,尽管我也添加了范围注释来解决此问题; 它仍然没有验证 - 值为零设置为选项标签!
我尝试删除OptionLabel
并将值超出设置范围的新项目添加到列表中,例如:
new DropDownListItem{Text = "Select", Value = "1564"},
但这仍然没有验证,1564 的值进入控制器以输入数据库!
任何想法为什么带有UIHINT
的PartialView
不会"遵守"视图模型上的验证注释?
请让我们知道..
非常感谢。
它是否适用于常规的 TextBox Html 帮助程序,然后你看到验证了吗?如果是这样,那么我会假设唯一的问题是您对小部件使用不同的名称。
尝试将名称设置为 .名称("内部用户访问")
或使其通用,使其与您使用该编辑器模板编辑的属性的名称相同
例如
@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"}
}
))