2011-03-16 67 views
2

幾乎每個.aspx頁面中我有我的網站需要有這樣的在其頂部正常工作:ASP.NET視圖:使用<%@大會避免......在每一個的.aspx

<%@ Assembly Name="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" %> 

無論如何,我可以避免必須在每個頁面的.aspx視圖中聲明這一點?有沒有什麼辦法可以在全局聲明全部.aspx視圖?也許在web.config中的東西?

回答

4

將它添加到assemblies

<assemblies> 
    <add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> 
</assemblies> 

的@assembly指令對應組件標記在web.config中沒有命名空間的標籤。檢查MSDN reference

+0

很高興知道爲什麼它被低調投票,以便任何不正確的問題都可以得到糾正或改進: – 2011-03-16 19:31:23

2

您可以在assemblies節在web.config中聲明,就像這樣:

<system.web> 
    <compilation> 
     <assemblies> 
     <add assembly="System.Web.Mvc, Version=3.0.0.0 ... "/>   
     </assemblies>  
    </compilation> 
</system.web> 

然而,根據MSDN文檔:駐留在Web應用程序的\ BIN

大會目錄會自動鏈接到該應用程序中的ASP.NET文件。這樣的程序集不需要@ Assembly指令。您可以從您的應用程序的Web.config文件的部分刪除以下行禁用此功能:

<add assembly="*"/> 
+0

沒有,@assembly指令對應於我認錯組裝config元素 – erikkallen 2011-03-16 19:00:56

+0

。你確實是對的。 – 2011-03-16 19:24:15

-2

把它在Web.config作爲一個全局命名空間。它將在您的所有頁面上可用。

<system.web> 
    <pages> 
      <namespaces> 
       <add namespace="System.Web.Mvc" /> 
       <add namespace="System.Web.Mvc.Ajax" /> 
       <add namespace="System.Web.Mvc.Html" /> 
       <add namespace="System.Web.Routing" /> 
      </namespaces> 
     </pages> 
</system.web> 
+0

不,@Assembly指令對應於程序集配置元素 – erikkallen 2011-03-16 19:00:14

0

正如其他人指出的那樣,您可以在web.config頁面部分聲明它。

另一種選擇(如果它對您有效)是使用新的Razor View engine。它不僅可以刪除這種類型的代碼,還可以提供更清晰的整體語法。當然,我意識到這可能不是一個可行的解決方案,因爲您可能受到當前技術/客戶需求等的限制。

的你可以在剃刀頁面頂部看到一個示例如下所示:

@model Some.StronglyTyped.Model 
@using Other.Libraries.To.Import 
@{ 
    ViewBag.Title = "Specific Page Title"; 
} 
+0

這很好,但它不會解決程序集問題(在Razor中執行程序集引用的方法是添加對該項目的引用)。 – erikkallen 2011-03-16 19:01:29