Передать значение из страницы в пользовательский контроль - PullRequest
1 голос
/ 01 апреля 2011

У меня есть пользовательский элемент управления, вызываемый на странице Default.aspx:

<myPrefix:myTagName ID="category" runat="server" />

Код для пользовательского элемента управления:

namespace WebApplication3.inc.controls {
    public partial class myTag : System.Web.UI.UserControl {
        public String id;
        public String name;
        public String value;
        public Hashtable attributes;

        protected void Page_Load(object sender, EventArgs e) {
            if (this.id != null)
                this.attributes["id"] = this.id;
            if (this.name != null)
                this.attributes["name"] = this.name;
            if (this.value != null)
                this.attributes["value"] = this.value;
        }
    }
}

в файле Default.aspx.CS код, я хотел бы установить значение этого тега:

this.articleCategory.value = this.currentArticle.Category.ToString();

Я получаю эту ошибку в 'значение' в этой последней строке:

'System.Web.UI.UserControl 'не содержит определения для' value ', и не найден метод расширения' value ', принимающий первый аргумент типа' System.Web.UI.UserControl '(вы пропустили директиву using или ссылку на сборку?)

Все демонстрации, которые я видел, показывают, что это должно работать.Я что-то упустил?

Ответы [ 2 ]

2 голосов
/ 01 апреля 2011

Сообщение об ошибке указывает, что ссылка на ваш экземпляр элемента управления из вашего класса страниц в настоящее время имеет тип System.Web.UI.UserControl. Он должен иметь тип WebApplication3.inc.controls.myTag для доступа к члену value. Один из способов исправить это - переместить объявление переменной в файл codebehind, а не автоматически генерировать переменную в Visual Studio, но точный способ сделать это зависит от настроек вашего проекта и от того, как вы включили элемент управления на странице.

0 голосов
/ 01 апреля 2011

Это может быть связано с тем, что вы звоните не в то время, сначала вызывается Page_Load на странице, а затем все дочерние элементы управления на странице.Может быть, вам просто нужно изменить элемент управления для инициализации себя на Init вместо Page_Load

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...