Web.config 添加未在文件级别应用的命名空间

Web.config add namespace not applied at file level

我在 Web 应用程序项目中引用了一个 class 库(两者都在同一个解决方案中)。在 Web 应用程序的网页中,如果我这样做:

If MyValidation.CorrectEmailFormat(email) Then ...

...Visual Studio 2013 强调方法,并建议我在页面顶部导入 MyCompany.EmailMethods 。如果我执行导入,页面会编译并且该方法可以正常工作。

但是,由于这些方法在应用程序中广泛使用,我不想每次都在页面级别添加它们。所以我前往 web.config,并这样做了:

<pages>
    <namespaces>
        <add namespace="MyCompany.EmailMethods" />
    </namespaces>
</pages>

但是VS仍然提示我在每个页面的顶部执行Import,如果不这样做,该方法在页面中无法识别。请问我做错了什么?我从 MSDN and other sources 假设这是实现此目标的正确方法。

Web 应用程序是 ASP.Net 个网页 (4.6)。

<pages> 指令仅适用于 ASPX 文件。

您需要对 Razor 使用等效指令:

<system.web.webPages.razor>
    <pages>
        <namespaces>
            <add namespace="MyCompany.EmailMethods" />

必须按照以下 SO post

中所述将引用添加到导入的命名空间

add-a-namespace-reference-to-all-web-application-web-pages-in-a-different-project

必须在标题为Imported Namespaces

的底部的项目属性页面中添加