Visual Studio 2010 Отключить генерацию кода конструктора для определенных элементов управления ascx - PullRequest
1 голос
/ 26 августа 2011

В настоящее время я занимаюсь разработкой веб-сайта для клуба Беркли в Visual Studio 2010 Prof. Ed.используя Asp.net и Dotnetnuke v6.Это будет мой второй раз, когда я столкнусь с этой конкретной проблемой.Я создал новый элемент управления (файл ascx) и работал над ним.Я хотел добавить Dotnetnuke htmleditor, так как его надоело, поэтому добавил необходимый код.А именно ...

<%@ Register TagPrefix="dnn" TagName="TextEditor" Src="~/controls/TextEditor.ascx"%>

<dnn:TextEditor ID="EmailContent" runat="server" Height="400px" Width="100%" />

Мне также пришлось изменить файл ascs.designer.cs, чтобы вместо чтения

protected global::System.Web.UI.UserControl EmailContent;

он читался как

protected global::DotNetNuke.UI.UserControls.TextEditor EmailContent;

Это заставляет его использовать DNE TextEditor, что я и хочу.Проблема в том, что всякий раз, когда VS использует конструктор для автоматической генерации кода, он перезаписывает нижнюю строку верхней строкой.Это означает, что каждый раз, когда я меняю ascx-файл, мне приходится снова менять конструктор.Это стало раздражать, но я не смог найти способ это исправить.Любые идеи о том, как отключить конструктор VS для определенных элементов управления или для сегментов кода в автоматически сгенерированном файле конструктора?

Ответы [ 2 ]

3 голосов
/ 26 августа 2011

Проблема заключается в том, что Visual Studio интерпретирует путь ~/, означающий корень вашего проекта, а не корень веб-сайта DotNetNuke (как он будет обрабатываться во время выполнения).

Если ваш проект модуля, над которым вы работаете, находится на сайте DotNetNuke, который размещен в вашем локальном IIS, вы можете настроить проект, чтобы знать, где находится его настоящий root.В свойствах проекта перейдите на вкладку Web и убедитесь, что он настроен для IIS.URL-адрес проекта должен быть URL-адресом вашего модуля (например, http://mysite.dnndev.me/DesktopModules/MyModule), а затем установите флажок «Переопределить корневой URL-адрес приложения» и введите там корень веб-сайта (например, http://mysite.dnndev.me).Это должно позволить Visual Studio понять, где ~/controls/TextEditor.ascx указывает, и найти нужный тип.

Тем не менее, это работает для нас примерно в 90% случаев, но у нас были проекты, в которых это не 'не работает по любой причине, и затем мы прибегаем к ответу @ mika о перемещении объявления из файла конструктора в файл кода позади.

3 голосов
/ 26 августа 2011

Поместите объявление EmailContent в файл ascx.cs и удалите его из файла ascx.designer.cs. Это позволит дизайнеру не испортить тип.

Это идет к ascx.cs:

protected global::DotNetNuke.UI.UserControls.TextEditor EmailContent;
...