SORU
27 Mart 2011, Pazar


Nasıl Denetleyicileri için bir temel sınıf kullanmadan tüm Görünümler için ViewBag özelliklerini ayarlamak için?

ViewData üzerine ortak özellikleri, geçerli kullanıcı gibi, sadık kaldığım geçmişte/tüm Kontrolörler, ortak bir temel kumanda dan miras alarak küresel bir moda ViewBag.

Bu benim temel denetleyicisinde IoC kullanımı ve böyle verilerin küresel paylaşılan haline ulaşmak için izin verdi.

Eğer MVC boru hattı içine kodu bu tür ekleme ve başka bir yolu varsa merak ediyorum?

CEVAP
15 Ocak 2014, ÇARŞAMBA


En iyi yolu ActionFilterAttribute kullanıyor ve küresel Özel Sınıf kayıt. asax (Application_Start)

public class UserProfilePictureActionFilter : ActionFilterAttribute
{

    public override void OnResultExecuting(ResultExecutingContext filterContext)
    {
        filterContext.Controller.ViewBag.IsAuthenticated = MembershipService.IsAuthenticated;
        filterContext.Controller.ViewBag.IsAdmin = MembershipService.IsAdmin;

        var userProfile = MembershipService.GetCurrentUserProfile();
        if (userProfile != null)
        {
            filterContext.Controller.ViewBag.Avatar = userProfile.Picture;
        }
    }

}

eğer küresel Özel Sınıf kayıt. asax (Application_Start)

protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();

        GlobalFilters.Filters.Add(new UserProfilePictureActionFilter(), 0);

    }

Sonra tüm görünümlerde kullanabilirsiniz

@ViewBag.IsAdmin
@ViewBag.IsAuthenticated
@ViewBag.Avatar

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Bennythecoder

    Bennythecode

    25 Mart 2008
  • DrakeVEVO

    DrakeVEVO

    17 AĞUSTOS 2009
  • ELPRESADOR

    ELPRESADOR

    21 HAZİRAN 2008