2011-11-04 49 views
0

我有一個看法,那就是使用外部提供的內部靜態內容。 這是我嘗試訪問它:C#MVC - 在視圖內調用外部類

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

    <asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server"> 
      <% 
       OpenDemoAccount content = NameSpace.Models.ActionsMetadata.Translations.ContentGroupsHolder(); 
      %> 

但我不能這樣,出於某種原因。如何訪問視圖中的外部類?
(在我使用的第一行中:NameSpace.ActionsMetadata.BrokerAction用戶數據)

+0

你會得到什麼錯誤? – svinto

+0

@svinto - NameSpace.Models.ActionsMetadata.Translations.ContentGroupsHolder()是一種類型,它在給出的上下文中無效 – SexyMF

+1

也許你忘記在NameSpace.Models.ActionsMetadata.Translations.ContentGroupsHolder()之前添加「new」 ? –

回答

1

該視圖確實沒有業務直接訪問此全局狀態 - 這應該是Controller的職責。這將是更符合MVC模式行,如果控制器訪問這些數據,並把它放在ViewBag爲利用視圖..

// In controller... 
ViewBag.OpenDemoAccount = NameSpace.Models.ActionsMetadata.Translations.ContentsGroupHolder(); 

// In view... 
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server"> 
    <% 
     OpenDemoAccount content = ViewBag.OpenDemoAccount; 
    %> 

編輯:

對於MVC 2的代碼會略有不同:

// In controller... 
ViewData["OpenDemoAccount"] = NameSpace.Models.ActionsMetadata.Translations.ContentsGroupHolder(); 

// In view... 
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server"> 
    <% 
     OpenDemoAccount content = (OpenDemoAccount)ViewData["OpenDemoAccount"]; 
    %> 
+0

謝謝,ViewBag不在我的控制器環境中 – SexyMF

+0

您正在使用哪個版本的MVC? – MattDavey

+0

版本3,但不是剃鬚刀的方法...我必須變成剃刀嗎? – SexyMF