2013-04-16 32 views
11

Tôi cần thực hiện như sau: Tôi có sẵn một số Bộ điều khiển và đang chạy, nhưng bây giờ tôi muốn tạo một BaseController. Mỗi Controllers của tôi nên kế thừa từ nó như thế này:Cách tạo BaseController với ViewBag

public class MySecondController : BaseController 

thats đang chạy cho đến nay. Bây giờ vấn đề:

Tôi muốn thêm ViewBag vào bộ điều khiển cơ sở này. Điều này có thể truy cập ViewBag từ mọi chế độ xem được gọi trong bộ điều khiển của tôi.

Làm cách nào để nhận ra điều này?

+0

Tôi đã trả lời câu hỏi khác của bạn, giải thích cách thực hiện điều này: http://stackoverflow.com/questions/16034728/how-to-access-the-project-properties-in-a-cshtml-razor-file –

Trả lời

25

Bạn có thể ghi đè phương pháp OnActionExecuting trong phương pháp ghi đè mà bạn có thể dữ liệu sang ViewBag từ điển.

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

I sẽ đề nghị làm cho ví dụ trừu tượng BaseController của bạn lớp trừu tượng công khai BaseController: Controller –

0

Bạn cũng có thể chỉ cần điền các ViewBag khi newing lên bộ điều khiển cơ sở

Public MustInherit Class BaseController : Inherits Controller 

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

End Class 

Sau đó constructor sẽ được gọi cho tất cả các lớp kế thừa:

Public Class OrderController : Inherits BaseController 

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

End Class 

Và truy cập từ của bạn chế độ xem dao cạo:

@ViewBag.ErrorMessage 
+1

Bí ẩn Downvoter? – KyleMit

Các vấn đề liên quan