2012-07-02 2 views
2

i crate @ Html.ActionLink 도우미는 사용자의 권한을 확인합니다. 그렇다면 나는 그렇지 않으면이 링크를 보여줍니다. 지금 문제는 @ Ajax.ActionLink에 있습니다. Ajax.ActionLink에 대한 도우미를 만들 수 있습니까? 내가 권한을 확인하는 사용자 정의 도우미를 확인하십시오. 그것은 html.actionlink 도우미와 잘 작동합니다. 아약스 액션에서 권한을 어떻게 확인합니까?MVC3에서 Ajax 도우미를 작성하는 방법

public static IHtmlString CustomActionLink(this HtmlHelper htmlHelper, int userId, string reqController, string reqAction, string linkText,int reqActionId = 0) 
    { 

     bool isAllowed = checkPermission(userId, reqController, reqAction, reqActionId); 
     if (isAllowed == false) 
     { 
      return MvcHtmlString.Empty; 
     } 
     return htmlHelper.ActionLink(linkText, reqAction, new { id =reqActionId }); 
    } 

나는 Ajax 작업에서 이와 동일한 검사를하고 싶습니다.

답변

4

ASP.NET MVC HTML 도우미 메서드는 기존 HtmlHelper 클래스와 AjaxHelper 클래스에 대해서만 extension methods입니다. 당신은 확장 메서드는 .NET이며 어떻게 작동하는지, 그것은 AjaxHelper 클래스에이 개념을 적용하기가 어렵지 않다 이해하면 :

public static IHtmlString CustomAjaxActionLink(
    this AjaxHelper ajaxHelper, 
    AjaxOptions ajaxOptions, 
    int userId, 
    string reqController, 
    string reqAction, 
    string linkText, 
    int reqActionId = 0 
) 
{ 
    bool isAllowed = checkPermission(userId, reqController, reqAction, reqActionId); 
    if (!isAllowed) 
    { 
     return MvcHtmlString.Empty; 
    } 

    return ajaxHelper.ActionLink(
     linkText, 
     reqAction, 
     new { id = reqActionId }, 
     ajaxOptions 
    ); 
} 

그리고 내부에 간단하게 지참 후 (이 사용자 지정 도우미를 사용하여보기 포함하는 클래스는 물론 범위에 선언되는 네임 스페이스) :

@Ajax.CustomAjaxActionLink(
    new AjaxOptions { UpdateTargetId = "foo" }, 
    123, 
    "SomeController", 
    "SomeAction", 
    "click me and get a surprise!", 
    456 
) 
+0

감사 :

public class AuthorizeAdminAttribute : AuthorizeAttribute { public override void OnAuthorization(AuthorizationContext filterContext) { if(!AppSecurity.Instance.IsUserInRoles(filterContext.HttpContext.User, AdminGroups)) { HandleUnauthorizedRequest(filterContext); } base.OnAuthorization(filterContext); } } 

당신은 같은 것을 사용 할 수 있습니다 컨트롤러에

. 사실 나는 선교 네임 스페이스 다. –

0

어떻게 AuthorizeAttribute 사용에 대한? 그것은 나를 위해 작동

[AuthorizeAdmin] 
     public ActionResult Index() 
     { 
      return View(); 
     } 
관련 문제