.Net MVC验证所选项目

时间:2016-06-13 03:44:07

标签: c# asp.net-mvc razor

如何进行客户端验证以验证所选项目?

我在.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的中间。

1 个答案:

答案 0 :(得分:0)

您可以构建自己的验证属性:https://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.customvalidationattribute(v=vs.110).aspx

有一个很好的博客: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;
            }
    }