2016-06-13 61 views
0

如何进行客户端验证以验证所选项目?.Net MVC validate Selected Item

我在.Net MVC3剃须刀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更改为其他角色。

我不想从SupportedRoles删除OperatorOperator用户,因为如果我们这样做,那么当Operator用户更新等领域,但不更新的作用,很可能是他的角色将被更改为默认的角色,用户不知道这一点。

我从MVC Model validate Selected Item阅读答案。 RangeAttribute对我的情况不起作用,因为RoleId对于Operator位于其他RoleIds中间。

+0

考虑使用[万无一失(http://foolproof.codeplex.com/) '[NotEqualTo]'指向类似的验证属性(或者你可以自己编写实现'IClientValidatable'的属性)。如果用户还没有分配该角色,则还应该生成'SelectList'来排除'Operator'。 –

回答

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; 
      } 
    } 
+0

OP的问题是如何获得**客户端验证**(并且此代码不会给客户端验证) –

相关问题