【问题标题】:Web.config add namespace not applied at file levelWeb.config 添加命名空间未在文件级别应用
【发布时间】:2015-10-13 15:25:24
【问题描述】:

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

If MyValidation.CorrectEmailFormat(email) Then ...

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

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

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

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

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

【问题讨论】:

  • 这是 Web 表单还是 MVC?
  • 它的 Web 表单,抱歉,我认为这是从网页假定的
  • Web Pages 实际上是 ASP.NET 中完全独立的技术。 Web Pages 使用 Razor 语法来创建页面。就像没有控制器的MVC。所以Web Forms 的指定很重要。
  • 好的,谢谢。我已经更新了标签

标签: asp.net .net vb.net visual-studio-2013 webforms


【解决方案1】:

必须将引用添加到导入的命名空间,如以下 SO 帖子中所述

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

必须在项目属性页面底部标题为Imported Namespaces

的地方添加

【讨论】:

  • 这个问题是我的。引用在该对话框中不可见,这很奇怪,因为 VS 建议导入它们!
  • 尝试在添加用户导入按钮之前的文本框中手动添加命名空间名称。希望您访问msdn.microsoft.com/en-us/library/3w4tctcf(v=vs.120).aspx。该页面还介绍了有关在命名空间中导入命名空间和类的内容。
  • 成功了!非常简单,但奇怪的是 VS 没有像在代码中那样看到潜在的引用......
【解决方案2】:

&lt;pages&gt; 指令仅适用于 ASPX 文件。

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

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

【讨论】:

  • 不是剃须刀,而是 Web 表单,这就是为什么我不明白为什么它不起作用
猜你喜欢
  • 2011-11-27
  • 2014-07-17
  • 2012-05-16
  • 1970-01-01
  • 2012-08-07
  • 1970-01-01
  • 2012-05-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多