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