如何进行客户端验证以验证所选项目?
我在.Net MVC3 Razor中有DropDownList
个用户角色信息。角色可以是SuperAdmin(RoleId=1)
,Operator(RoleId=2)
和Viewer(RoleId=3)
。
现在我想弃用Operator
。如何进行客户端验证,以便在用户编辑其用户信息时,如果角色为Operator
,页面将显示验证错误?
这是UserModel:
// User Role Id
public int RoleId { get; set; }
/// Supported user roles
public IEnumerable<SelectListItem> SupportedRoles { get; set; }
查看:
Html.DropDownListFor(m => m.RoleId, Model.SupportedRoles)
预期的行为是,对于具有Operator
角色的用户,当他编辑用户信息时,除非将其角色从Operator
更改为其他角色,否则无法保存其更改。
我不想从Operator
用户SupportedRoles
移除Operator
,因为如果我们这样做,那么当Operator
用户更新其他字段时不更新角色,很可能他的角色将更改为默认角色,用户不知道这一点。
我从MVC Model validate Selected Item读了答案。 RangeAttribute
对我的案例不起作用,因为RoleId
的{{1}}位于其他RoleIds的中间。
答案 0 :(得分:0)
有一个很好的博客:http://www.prideparrot.com/blog/archive/2012/4/model_validation_in_asp_net_mvc
public class MyListAttribute : ValidationAttribute
{
public override bool IsValid(object value)
{
return value != null && (int)value != 2;
}
}