2013-04-16 17 views
11

Aşağıdakileri yapmam gerekiyor: Bazı Denetleyiciler hazır ve çalışıyor, ancak şimdi bir BaseController oluşturmak istiyorum. benim Controllers Her Böyle ondan devralan olmalıdır:ViewBag ile bir BaseController nasıl oluşturulur

public class MySecondController : BaseController 

şu zaten şimdiye kadar çalışıyor. Simdi Sorun:

Bu ana denetleyiciye ViewBag eklemek istiyorum. Bu ViewBag, denetleyicilerimde çağrılan her görünümden erişilebilir olmalıdır.

Bunu nasıl gerçekleştirebiliriz?

+0

Bunu nasıl yapacağınızı açıklayan başka bir soruya cevap verdim: http://stackoverflow.com/questions/16034728/how-to-access-the-project-properties-in-a-cshtml-razor-file –

cevap

25

ViewBag sözlüğüne verisi olan geçersiz kılınan yöntemde OnActionExecuting yöntemini geçersiz kılabilirsiniz.

public abstract class BaseController : Controller 
{ 
    protected override void OnActionExecuting(ActionExecutingContext filterContext) 
    { 
     ViewBag.someThing = "someThing"; //Add whatever 
     base.OnActionExecuting(filterContext); 
    } 
} 
+1

I BaseController'ınızı soyutlaştırmanızı öneririm örn. public abstract class BaseController: Denetleyici –

0
Ayrıca sadece doldurabilir

ViewBag baz denetleyici Sonra

Public MustInherit Class BaseController : Inherits Controller 

    Public Sub New() 
     ViewBag.ErrorMessage= "someThing"; //Add whatever 
    End Sub 

End Class 

newing kadar o yapıcı tüm kalıtsal sınıflar için denilen olsun zaman: den

Public Class OrderController : Inherits BaseController 

    Function Index() As ActionResult 
     Return View() 
    End Function 

End Class 

Ve erişilebilir senin tıraş bıçağı görünümü:

@ViewBag.ErrorMessage 
+1

Gizem Downvoter? – KyleMit

İlgili konular