Какая точка тега Web.config system.web/Pages/Namespaces?

Независимо от того, содержит ли мой корневой веб-конфигуратор (тот, что в Windows/Microsoft.NET/...) элементы system.web/pages/namespaces/add, все же требуется, чтобы я включал использование операторов на каждом файле aspx.cs CodeBehind. Зачем? Не следует ли компилировать и не жаловаться, что он не может понять, что такое Страница? В конце концов, <add namespace="System.Web" /> существует в корневом web.config!

Ответ 1

Элемент system.web/pages/namespaces/add предназначен для файлов .ASPX, для обычных .CS файлов (включая .ASPX.CS) по-прежнему необходимо сделать правильный using, поскольку перед компиляцией нет предварительной обработки источника. Таким образом, .ASPX.CS должен быть допустимым CS файлом, включая все объявления using Namespace.

Ответ 2

Это добавляет пространства имен к вашим файлам aspx и ascx, поэтому вам не нужно включать инструкции <%@ Import Namespace="MyNameSpace" %>.

В документации на MSDN:

Элемент namespaces определяет набор директив импорта для использовать во время предварительной компиляции сборки. Этот атрибут соответствует @Импортировать директиву на странице ASP.NET. Директива @Import позволяет вы должны указать пространства имен, которые автоматически импортируются во все страниц приложения.

Ваш код не влияет на эти записи в web.config.

Ответ 3

Другие ответы здесь показывают, что этот параметр web.config влияет только на страницы ASPX, а не на страницы с кодом, такие как ASPX.CS. Я только что протестировал это на веб-сайте ASP.NET, ориентированном на .NET 4.0, и нашел, что это верно для страниц С#, но не для страниц VB.

Добавление пространства имен в настройки web.config удалило требование перечислить его в верхней части каждой страницы ASPX.VB.

Меня бы интересовали любые теории, почему это может быть. Я бы подумал, что это будет работать как для ASPX.CS, так и для кода ASPX.VB за файлами.