MVC4 ViewModel [必需] 注释不适用于 KendoUI 下拉列表的 UIHINT



我在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 的值进入控制器以输入数据库!

任何想法为什么带有UIHINTPartialView不会"遵守"视图模型上的验证注释?

请让我们知道..

非常感谢。

它是否适用于常规的 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"}
            }
))

相关内容

最新更新