2016-06-13 2 views
0

선택한 항목의 유효성을 검사하는 클라이언트 측 유효성 검사를 수행하는 방법은 무엇입니까?.Net MVC 선택한 항목의 유효성을 검사하십시오.

나는 사용자 역할 정보가있는 .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; } 

보기 :

예상되는 동작은 그가 자신의 사용자 정보를 편집 할 때 Operator 역할을 가진 사용자를 위해, 그는 자신의 변경 사항을 저장 할 수 있다는 것이다
Html.DropDownListFor(m => m.RoleId, Model.SupportedRoles) 

그가 그의 역할을 Operator에서 다른 역할로 변경하지 않는 한. 우리가 그렇게 할 경우, 다음 Operator 사용자가 다른 필드를 업데이트하지만 역할을 업데이트하지 않는 경우 때문에

내가 Operator 사용자 SupportedRoles에서 Operator을 제거하지 않을 가능성이 높습니다 자신의 역할이 기본 역할로 변경하고 사용자는 그것을 인식하지 못합니다.

나는 대답을 MVC Model validate Selected Item에서 읽었습니다. Operator에 대한 RoleId이 다른 RoleIds의 중간에 있기 때문에 RangeAttribute이 내 경우에는 작동하지 않습니다. 당신은 당신의 자신의 검증을 구축 할 수 있습니다

+0

A [절대 안전한]을 사용하여 고려 (http://foolproof.codeplex.com/) '[NotEqualTo]'를 비슷한 유효성 검사 속성 (또는 IClientValidatable을 구현하는 독자적으로 작성할 수 있습니다)에 추가하십시오. 또한 사용자가 이미 할당 된 역할을 가지고 있지 않다면'Operator'를 제외시키기 위해'SelectList'를 생성해야합니다. –

답변

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의 질문은 ** 클라이언트 측 유효성 검사 **를 얻는 방법입니다 (이 코드는 클라이언트 측 유효성 검사를 제공하지 않습니다) –

관련 문제