2012-02-10 49 views
0

我的視圖都使用強類型的視圖模型。我的所有觀點都是強類型的,如何傳遞給site.master?

現在在我的控制器操作中,我想設置一個警告文本,該文本將顯示在我的site.master文件中。

如果我在我的控制器操作中設置文本,它將如何在site.master中可見?

我很困惑b/c主人的強類型視圖會有所不同。

(MVC2)

更新

而且,如果我重定向到另一種觀點認爲,即使我把它不會被使用的視圖模型,因爲它是重定向,我知道MVC有一些一種單一的頁面會話,那又叫什麼?

+1

你不能使用接口嗎?對於eaxmple:IView – Bazzz 2012-02-10 16:06:09

回答

0

在控制器中,您可以將對象保存在ViewDataViewBag字典中,並從視圖和主控兩者中進行訪問。

+0

但viewdata將無法正常工作,如果我正在做一個'return redirecttoaction'的權利?我必須使用viewbag? – codecompleting 2012-02-10 16:44:54

2

對於我所有的強類型ViewModels,我都使用一個通用的基類和接口。默認情況下,母版頁獲取它們。

public class ViewModelBase : IViewModel { 
    public string InformationForMasterPage{get;set;} 
} 
public class ViewModelHomePage : ViewModelBase{ 
    public string SomeInformationNotNeededForMasterPage{get;set;} 
} 
public interface IViewModel{ 
    public string InformationForMasterPage{get;set;} 
} 

在頂部的主頁的:

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<ViewModelHomePage>" % 

然後母版頁的頂部:

<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage<IViewModel>" %> 

再深的母版頁:

<%: Model.InformationForMasterPage %> 

將工作得很好。

相關問題