2011-09-28 5 views
0

나는 jqgrid를 가지고 있으며, 필자의 필요에 따라 링크를 포맷하고 표시하는 사용자 정의 포매터를 가지고있다. 이것은 잘 작동하지만 문제가 있습니다. 조건부로 링크를 표시하고 싶습니다. 어떻게해야합니까?어떻게 조건부로 링크를 jqgrid에 표시 할 수 있습니까?

예 : 사람이 관리자 인 경우 편집, 삭제 등 모든 링크를 표시합니다 (이 링크는 컨트롤러의 작업 방법에 매핑 됨). 그러나 그 사람이 NonAdmin 사용자 인 경우보기 링크 만 표시하고 다른 모든 링크는 숨 깁니다.

이 작업을 수행하는 일반적인 전략이 필요합니다. 전략 중 하나는 편집, 삭제 등의 링크가 표시되는지 아닌지를 나타내는 내 json 데이터에 부울 필드를 추가하는 것입니다. 그런 다음 내 포맷터에서 행 데이터를보고 링크 표시 여부를 결정할 수 있습니다.

더 좋은 방법이 있습니까?

답변

1

서버에서 JSON 응답으로 추가 데이터를 제안하면 소리가납니다. 중요한 점은 은 어떤 방식 으로든 관리자가 아닌 사용자의 데이터 편집을 막아야한다는 것입니다.. 편집을위한 링크를 숨기거나 만들지 않는 것은 보안 기능이 아니지만 대부분 허용되지 않는 작업을 방지하기위한 GUI 개선입니다. 구현에 기술적 인 문제가있는 경우 질문에 해당 코드를 포함해야합니다.

추가 양식 편집을 사용하는 경우 에서 the answer 또는 another demo에서 the another answer까지 유용 할 수 있습니다.

+0

감사합니다. 링크를 숨기는 것이 GUI 개선이라고 이해합니다. 서버 측 보안은 완전히 다른 이야기입니다. [Authorize (Roles = "Admin")] 또는 이와 비슷한 것을 사용하면됩니다. – TCM

+0

@Anthony : 환영합니다! '[Authorize (Roles = "Admin")]'의 사용법은 ASP.NET MVC 액션에서 잘 사용할 수 있습니다. 권한이 낮을 경우 사용자에게 표시 할 메시지 만 사용자 정의해야합니다. 그래서 사용자는 실패 이유를 분명히합니다. – Oleg

+0

그것이 내가 이해하지 못하는 것입니다. 메시지를 어떻게 커스터마이징 할 수 있습니까? 실제로 사용자가 Admin이 아닌 경우 사용자를 로그인 URL로 보내 게됩니다. 양식 인증을 사용하고 있습니다. ErrorMessage를 표시하기 위해 해당 속성에 사용할 수있는 옵션이 없습니다. 아마도 Attribute를 확장하고 TempData [ "Message"]를 설정 한 다음 로그인 페이지에 해당 메시지를 표시 할 수 있습니다. 그냥 생각! 만약 당신이 그 질문에 직접 관련이 없기 때문에 당신이 나에게 새로운 질문을 만들어 주길 원한다면 당신이 그것을 게시 할 수 있습니다 답변을 알고 있습니다. – TCM

관련 문제