ASP.NET视图:避免在每个.aspx中使用<%@ Assembly ....

时间:2011-03-16 18:54:11

标签: asp.net-mvc

我网站上的每个.aspx页面都需要在顶部才能正常运行:

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

无论如何我可以避免在每个页面的.aspx视图中声明这个吗?有没有什么方法可以为所有.aspx视图全局声明这个?也许是web.config中的东西?

4 个答案:

答案 0 :(得分:4)

将其添加到assemblies

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

@Assembly指令对应于web.config中的assemblies标记而不是namespace标记。查看MSDN reference

答案 1 :(得分: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="*"/>

答案 2 :(得分:0)

正如其他人所指出的,您可以在web.config页面部分声明这一点。

另一种选择(如果它可用)是使用新的Razor View engine。它不仅删除了这种类型的代码,还提供了更清晰的整体语法。当然,我意识到这可能不是一个可行的解决方案,因为您可能受到当前技术/客户需求等的限制。

您可以在Razor页面顶部看到的示例如下所示:

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

答案 3 :(得分:-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>