我网站上的每个.aspx页面都需要在顶部才能正常运行:
<%@ Assembly Name="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" %>
无论如何我可以避免在每个页面的.aspx视图中声明这个吗?有没有什么方法可以为所有.aspx视图全局声明这个?也许是web.config中的东西?
答案 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>