Re[2]: Доступ к переменным их контрола
От: AlexGK Россия  
Дата: 20.06.05 18:19
Оценка:
Здравствуйте, flashion, Вы писали:

F>Да, я так делал, но не получается


F>Ругается:

F>CS0246: The type or namespace name 'PageClass' could not be found (are you missing a using directive or an assembly reference?)

F>Объявляю класс страницы так:

F>public partial class PageClass : System.Web.UI.Page

F>Контрол вставляю так:

F><%@ Register Src="App_Controls/MyControl.ascx" TagName="MyControl" TagPrefix="myTag" %>
F><myTag:MyControl ID="MyControl" runat="server" />

F>VS 2005 мой PageClass внутри контрола даже не видит.


F>Что я не так делаю?

F>Подскажите, плиз!

F>
данное сообщение получено с www.gotdotnet.ru

F>ссылка на оригинальное сообщение


А ты где обращаешься к переменной? C помощью ASP-вставки или непосредственно из кода?
Насколько я понял — ASP вставка. Проверь есть ли в using секции юзер-контрола ссылка на namespace страницы и если есть
то должно быть так:
namespace Project.MyControls{

using Project.Pages;
....





}

а не так:


using Project.Pages;

namespace Project.MyControls{
...
}
Re[3]: Доступ к переменным их контрола
От: AlexGK Россия  
Дата: 20.06.05 19:00
Оценка:
Здравствуйте, AlexGK, Вы писали:

AGK>Здравствуйте, flashion, Вы писали:


F>>Да, я так делал, но не получается


F>>Ругается:

F>>CS0246: The type or namespace name 'PageClass' could not be found (are you missing a using directive or an assembly reference?)

F>>Объявляю класс страницы так:

F>>public partial class PageClass : System.Web.UI.Page

F>>Контрол вставляю так:

F>><%@ Register Src="App_Controls/MyControl.ascx" TagName="MyControl" TagPrefix="myTag" %>
F>><myTag:MyControl ID="MyControl" runat="server" />

F>>VS 2005 мой PageClass внутри контрола даже не видит.


F>>Что я не так делаю?

F>>Подскажите, плиз!

F>>
данное сообщение получено с www.gotdotnet.ru

F>>ссылка на оригинальное сообщение


Признаю: не прав. Это я говорил про VS 2003. Попрбовал в Visual Web develoer , многое они там поменяли...... не понимаю почему, но действиетльно нельзя обратиться к типу страницы.... ЕДинственное до чего додумался:
Создаешь файл класса, в нем определяешь интерфейс:

public interface IValue
{
     string Value
    {
        get;
    }
}


на странице в которой ты помещаешь данные
    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;

    public partial class MyPage : System.Web.UI.Page,IValue
    {
        private string _val = "";
        string IValue.Value
        {
            get { return _val; }
        }
        protected void Page_Load(object sender, EventArgs e)
        {

            _val = "Vasya Pupkin";
        }
    }



В юзер контроле:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using ASP;
    public partial class wc : System.Web.UI.UserControl
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            
           this.Label1.Text = ((IValue)this.Page).Value;
        }
    }


===========
Согласен, что это кривовато. Решение получено с целью доказать Visual Web Developer, что я ее обману
Позже дам нормальное решение.
Re[3]: Доступ к переменным их контрола
От: Аноним  
Дата: 21.06.05 06:43
Оценка:
Всем огромное спасибо за ответы!!!!!!!!!!!!!!!!

Тут пару раз Вы предлагали решение, связанное с namespace.
В общем, почему-то, .NET ругается, когда класс страницы или контрола пытаешься включить в какой-либо namespace.

namespace myNamespace
{
public partial class myClass : System.Web.UI.UserControl
{
...

CS0115: 'ASP.myControlascx.FrameworkInitialize()': no suitable method found to override


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re[4]: Доступ к переменным их контрола
От: AlexGK Россия  
Дата: 21.06.05 09:47
Оценка:
Здравствуйте, flashion, Вы писали:

F>Всем огромное спасибо за ответы!!!!!!!!!!!!!!!!


F>Тут пару раз Вы предлагали решение, связанное с namespace.

F>В общем, почему-то, .NET ругается, когда класс страницы или контрола пытаешься включить в какой-либо namespace.

F>namespace myNamespace

F>{
F> public partial class myClass : System.Web.UI.UserControl
F> {
F> ...

F>CS0115: 'ASP.myControlascx.FrameworkInitialize()': no suitable method found to override


Да, это я понял, когда попробовал все проделать на VWD 2005. Вечером попробую с ним разобраться. Пока что есть лишь идеи с интерфейсами см. выше
F>
данное сообщение получено с www.gotdotnet.ru

F>ссылка на оригинальное сообщение
Re[5]: Доступ к переменным их контрола
От: AlexGK Россия  
Дата: 21.06.05 17:42
Оценка:
Здравствуйте, AlexGK, Вы писали:

AGK>Здравствуйте, flashion, Вы писали:


F>>Всем огромное спасибо за ответы!!!!!!!!!!!!!!!!


F>>Тут пару раз Вы предлагали решение, связанное с namespace.

F>>В общем, почему-то, .NET ругается, когда класс страницы или контрола пытаешься включить в какой-либо namespace.

F>>namespace myNamespace

F>>{
F>> public partial class myClass : System.Web.UI.UserControl
F>> {
F>> ...

F>>CS0115: 'ASP.myControlascx.FrameworkInitialize()': no suitable method found to override


AGK> Да, это я понял, когда попробовал все проделать на VWD 2005. Вечером попробую с ним разобраться. Пока что есть лишь идеи с интерфейсами см. выше

F>>
данное сообщение получено с www.gotdotnet.ru

F>>ссылка на оригинальное сообщение


Посмотрел в дизассемблере... нет слов, одни чувства, юзер контрол находится в одной сборке, страница — в другой (может, это потому что я работаю без IIS?). Советую посмотреть и тебе.
Re[5]: Доступ к переменным их контрола
От: Аноним  
Дата: 22.06.05 05:52
Оценка: -1
Попробуйте ещё так:

В контроле сделайте паблик свойство Owner.

В коде страницы при загрузке этого контрола пишите в это свойство ссылку на страницу
MyControl ctl = (MyControl) ....
ctl.Owner = this;

Потом в контроле обращайтес к паблик свойствам страницы.


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re[6]: Доступ к переменным их контрола
От: AlexGK Россия  
Дата: 22.06.05 12:26
Оценка:
Здравствуйте, Corwin_XX, Вы писали:

C_X>Попробуйте ещё так:


C_X>В контроле сделайте паблик свойство Owner.


C_X>В коде страницы при загрузке этого контрола пишите в это свойство ссылку на страницу

C_X>MyControl ctl = (MyControl) ....
C_X>ctl.Owner = this;

C_X>Потом в контроле обращайтес к паблик свойствам страницы.


C_X>
данное сообщение получено с www.gotdotnet.ru

C_X>ссылка на оригинальное сообщение



Чтобы к чему-то обратиться, нужно знать тип этого чего-то. Ссылку на объект-страницы я и так имею

MyControl.Page
Re[6]: Доступ к переменным их контрола
От: Аноним  
Дата: 28.06.05 12:52
Оценка:
MyControl.Page — не совсем то. Например, ты можешь грузить свой конотрол из другого контрола (ascx).

Насчёт типа — я не понял, как его можно не знать? Как ты описываешь свойство Owner?
Public SomeType Owner {...}




данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re[7]: Доступ к переменным их контрола
От: AlexGK Россия  
Дата: 29.06.05 17:34
Оценка:
Здравствуйте, Corwin_XX, Вы писали:

C_X>MyControl.Page — не совсем то. Например, ты можешь грузить свой конотрол из другого контрола (ascx).


C_X>Насчёт типа — я не понял, как его можно не знать? Как ты описываешь свойство Owner?

C_X>Public SomeType Owner {...}

Угу... Я тоже так думал. Попробуй в Visual WebDeveloper 2005 0 поймешь. На всякий случай расскажу. Есть проект в нем есть страница Default.aspx, соответственно класс c тем же именем в одноименном файле. Есть юзер-контрол, его класс, предположим wc... бла-бла-бла.
Весь прикол в том, что когда в коде страницы пишешь что-то типа:

...Page_load(..){
Type t = typeof(wc);// компилируется, работает
this.label1.Text = t.ToString();
}


а если пишешь в коде контрола
...Page_load(..){
Type t = typeof(Default);// возможны варианты - _default , default 
this.label1.Text = t.ToString();
}


То он ругается на этапе компиляции, мол, не знает он такого класса Default. Это верно не только для дефолтовой страницы но и для всех страниц. Ради прикола можешь посмотреть что компилятор дает на выходе. Попробуй проделать, я тоже не мог поверить в это
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.