У меня есть зарегистрировал два пространства имен в Web.config
следующим образом:
<add tagPrefix="a" assembly="WebApplication1" namespace="WebFormsApplication1.Controls1" />
<add tagPrefix="a" assembly="WebApplication1" namespace="WebFormsApplication1.Controls2" />
Я использую их вот так на странице .aspx
:
<a:WebCustomControl1 ID="Control1" runat="server"></a:WebCustomControl1>
<a:WebCustomControl2 ID="Control2" runat="server"></a:WebCustomControl2>
Вот (сломанный) файл .designer.cs
, который VS создает для этой страницы (обратите внимание, что он использует пространство имен Controls2
для обоих элементов управления, хотя Control1
находится в пространстве имен Controls1
):
protected global::WebFormsApplication1.Controls2.WebCustomControl1 Control1;
protected global::WebFormsApplication1.Controls2.WebCustomControl2 Control2;
Похоже, что второй <add
в Web.config перезаписывает первый. Я хочу, чтобы он добавлялся, а не перезаписывался, возможно ли это?
Думаю, есть и другие варианты:
- Поместите все в одно пространство имен
- Используйте уникальный
tagPrefix
для каждого пространства имен
Но они не крутые, так как у нас здесь около сотни элементов управления.
Обратите внимание, что если зарегистрировать пространства имен в самом aspx
, все будет работать нормально:
<%@ Register TagPrefix="a" Namespace="WebFormsApplication1.Controls2" Assembly="WebFormsApplication1" %>
<%@ Register TagPrefix="a" Namespace="WebFormsApplication1.Controls" Assembly="WebFormsApplication1" %>
Так что это похоже на какую-то ошибку в Web.config
синтаксическом анализе.
(Я на VS 2017, но мне сказали, что это произошло по крайней мере с VS 2010).