Почему автоматически созданный код ASP.NET .designer имеет неправильный тип? - PullRequest
4 голосов
/ 26 августа 2009

Я работаю над взломом модуля DotNetNuke Events. Я установил исходный код, и он создал A-OK без изменений. Однако, когда я изменяю файл EventMonth.ascx, Visual Studio обновляет связанный с ним файл .designer.vb ... и объявляет два объекта неправильного типа! Это выглядит так:

Protected WithEvents EventIcons As Global.System.Web.UI.UserControl

И должно выглядеть так:

Protected WithEvents EventIcons As Global.DotNetNuke.Modules.Events.EventIcons

Очевидно, это не сработает ... компилятор (правильно) выдает ошибку, когда EventIcons используется в коде. Что вызывает это? Я мог бы легко исправить это вручную, но тогда, конечно, он просто сломается позже. Я не думаю, что это тот факт, что идентификатор элемента управления совпадает с именем класса, потому что то же самое происходит с другим экземпляром того же элемента управления, но с другим именем.

Обновление: ОК ... Я считаю, что это происходит, потому что указанный пользовательский элемент управления не может быть найден во время разработки. Но это, очевидно, работает во время выполнения:

<%@ Register TagPrefix="evt" TagName="Icons" Src="~/DesktopModules/Events/EventIcons.ascx" %>

Это имеет логический смысл ... но я полагаю, что тогда возникает вопрос "что решает во время разработки?" Я думаю, я могу изменить это просто «EventIcons.ascx», и он будет генерировать код ОК. Но будет ли это работать во время выполнения? : |

Ответы [ 2 ]

8 голосов
/ 26 августа 2009

Поскольку проект не запускается в корне приложения, вы должны сообщить проекту, где находится настоящий корень приложения, прежде чем он сможет правильно разрешить ~. Перейдите на вкладку «Веб» свойств проекта и убедитесь, что в заголовке «Серверы» выбран «Использовать локальный веб-сервер IIS». Задайте URL-адрес проекта для вашего конкретного проекта (например, http://localhost/DotNetNuke_2/DesktopModules/Events).. Затем проверьте переопределить корневой URL-адрес приложения и установите для него корневой URL-адрес приложения (т. Е. http://localhost/DotNetNuke_2).. Это позволит проекту веб-приложения). чтобы узнать, как найти эти элементы управления.

Атрибут Src относится к элементу управления, поэтому он должен работать нормально, просто установив его на "EventIcons.ascx", а не указав его в корне приложения.

0 голосов
/ 26 августа 2009

~ разрешается в корень папки приложения.

...