Здравствуйте, 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{
...
}
Здравствуйте, 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
Здравствуйте, 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>ссылка на оригинальное сообщение
Здравствуйте, 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?). Советую посмотреть и тебе.
Здравствуйте, 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 {...}
Здравствуйте, 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. Это верно не только для дефолтовой страницы но и для всех страниц. Ради прикола можешь посмотреть что компилятор дает на выходе. Попробуй проделать, я тоже не мог поверить в это