2012-03-23 17 views
5

MVC uygulamasında, kullanıcıya rollerine göre farklı bir eylem görünümü sunmak için bir gereksinimim var. Bunu yapmanın en iyi yolu nedir? ŞuMVC - Kullanıcı Rolüne göre Anahtar Görünümü

ben sevmiyorum aşağıdaki kod:

if (HttpContext.User.IsInRole("Admin")) 
    return View("Details.Admin", model); 
else if (HttpContext.User.IsInRole("Power")) 
    return View("Details.Power", model); 

//default 
return View("Details", model); 

bu bir Eylem Filtre için uygun olur mu?

cevap

6

Bu, bir Eylem Filtresi için uygun mu?

Kesinlikle:

public class MyActionFilterAttribute : ActionFilterAttribute 
{ 
    public override void OnActionExecuted(ActionExecutedContext filterContext) 
    { 
     var result = filterContext.Result as ViewResultBase; 
     if (result != null) 
     { 
      var user = filterContext.HttpContext.User; 
      if (user.IsInRole("Admin")) 
      { 
       result.ViewName = string.Format("{0}.Admin", filterContext.ActionDescriptor.ActionName); 
      } 
      else if (user.IsInRole("Power")) 
      { 
       result.ViewName = string.Format("{0}.Power", filterContext.ActionDescriptor.ActionName); 
      } 
     } 
    } 
} 

Yoksa hatta bir özel görünüm motorunu inşa edebileceğini.

+0

ben bir görünüm motoru oluşturmadan gerektirecek meydana gelen bu kadar yeter örneğini sanmıyorum ama eylem filtresi yaklaşımı muhtemelen iyi olurdu endam edildi. Teşekkürler Darin – Dismissile

İlgili konular