Контекст не является членом пользовательского контроля asp.net

Я только что создал новый пользовательский элемент управления в проекте веб-приложения asp.net.

Сразу после создания исходник выглядит так:

<%@ Control Language="VB" AutoEventWireup="false" CodeFile="SSR_Project.ascx.vb" Inherits="CS_SSR_RAIO.SSR_Project" %>

Но как только я добавляю к нему дополнительный код, сразу появляется ошибка в первой строке:

Контекст не является членом «CS_SSR_RAIO.SSR_Project».

У меня есть другие пользовательские элементы управления, которые имеют точно такие же объявления, но не имеют этой ошибки.

Любая помощь будет принята с благодарностью!


person real_yggdrasil    schedule 09.10.2012    source источник


Ответы (7)


Я получил эту ошибку, потому что не смог найти класс моего нового пользовательского кода. У меня было это, потому что я скопировал пользовательский элемент управления, и он находился в пространстве имен, которое я неправильно добавил в атрибут Inherits.

Добавил префикс пространства имен, и он снова заработал :)

person Ian Grainger    schedule 04.12.2015
comment
И убедитесь, что ваш файл класса в SSR_Project.ascx.vb действительно называется SSR_Project. - person mbomb007; 16.08.2016

У меня это случилось со мной при следующем условии:

С веб-сайтом (в отличие от проекта) в VS2008:

1) Я скопировал существующий/действующий пользовательский элемент управления (как в CTRL + Click, Drag, Drop)
2) Я немного изменил копию (присоединил источник данных списка к другая хранимая процедура)


Я исправил это следующим образом:

1) Создайте НОВЫЙ пользовательский элемент управления (добавьте новый элемент в VS)
2) Откройте .ascx, который я изначально скопировал, и на этот раз просто скопируйте всю разметку и вставьте ее в новый пользовательский элемент управления. .ascx.
3) То же самое для файла .ascx.vb — откройте файл, из которого нужно скопировать, скопируйте весь код и вставьте его в файл .ascs.vb нового пользовательского элемента управления.


Если вы просто посмотрите на старый и новый файлы, то ничего не объясните — они кажутся идентичными. Разница для меня заключалась в том, что копирование файла не удалось, тогда как копирование содержимого файла завершилось успешно.

Я подозреваю, что это может быть как-то связано с частичными классами и тем фактом, что вы не можете получить доступ ко всем частям при работе с веб- сайтом. Я думаю, что когда дело доходит до проектов, вы можете получить доступ ко всем частям — и, возможно, если бы это было так, я бы смог увидеть, что вызвало проблема.

person Chains    schedule 22.01.2014

Убедитесь, что элемент управления наследуется от System.Web.UI.UserControl.

Код позади (SSR_Project.ascx.vb) должен иметь следующее

public partial class SSR_Project : System.Web.UI.UserControl

Извините, это синтаксис С#, но вы поняли :)

Изменить: я думаю, что это синтаксис Vb..

Открытый класс MustInherit SSR_Project наследует System.Web.UI.UserControl

person zybroxz    schedule 09.10.2012

Спасибо за помощь, zybroxz и Константин Д.
В итоге я удалил usercontrol из решения, добавил его снова и вставил в него тот же код, и все заработало. Я заметил, что конструктор пользовательского элемента управления был пуст с первой попытки, во второй раз он был правильно заполнен.

Я не удивлюсь, если что-то пойдет не так во время создания пользовательского элемента управления, и эта ошибка просочится в файл pdp и, следовательно, не сможет удалить...

person real_yggdrasil    schedule 09.10.2012

Вы можете получить доступ к своему контексту, but your class must inherit from UserControl

Ссылка: http://msdn.microsoft.com/fr-fr/library/system.web.ui.control.context(v=vs.80).aspx

введите здесь описание изображения

person Aghilas Yakoub    schedule 09.10.2012

Копирование существующего элемента управления, а затем вставка и редактирование могут привести к этой проблеме. Просмотрите блок «Созданный конструктором веб-форм код» в верхней части страницы .aspx.vb. Каждый элемент управления должен быть указан в списке: т. Е. «Защищено WithEvents lblX As System.Web.UI.WebControls.Label», добавьте вставленные элементы управления в список, и все готово.

person Paul    schedule 18.11.2014

Для меня в VB.Net проблема заключалась в следующем:

Если у вас есть эта ошибка: error BC30456: "AnyPublicMethodOrProperty" is not a member of 'UserControl'

Это связано с тем, что пользовательский элемент управления объявлен как общий UserControl, а не точно унаследованный класс, поэтому на родительской странице дизайнера (например: default.aspx.designer.vb) свойство элемента управления должно быть объявлено с точным именем класса, а не с унаследованным классом UserControl. .

Итак... попробуйте найти это на родительской странице дизайнера:

'''<summary>
'''UcYourControlName control.
'''</summary>
'''<remarks>
'''Auto-generated field.
'''To modify move field declaration from designer file to code-behind file.
'''</remarks>
Protected WithEvents ucYourControlName As Global.System.Web.UI.UserControl

И замените его на это:

'''<summary>
'''UcYourControlName control.
'''</summary>
'''<remarks>
'''Auto-generated field.
'''To modify move field declaration from designer file to code-behind file.
'''</remarks>
Protected WithEvents ucYourControlName As Global.Wherever.Your.UserControl.Namespace.Is.Located.UcYourControlNameClass
person rasputino    schedule 16.04.2018