Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка под ASP.NET > Приведение типов


Автор: davandr 19.6.2007, 11:59
Всем привет.

Подгружаю динамически свой контрол на страницу. Глючит с завидным постоянством. После перезапуска нормально компилится ровно один раз. Либо нужно чередовать варианты. 

Так 

Код

            MyControl myControl = (MyControl)Page.LoadControl("Controls/MyControl");


и вот так 

Код

            MyControl myControl = Page.LoadControl("Controls/MyControl.ascx") as MyControl;



Вот и объясните мне, пожалуйста, кто сможет. В чем отличие этих двух вариантов привидения типов, и возможно ли еще как-то это реализовать?

Автор: Mymik 19.6.2007, 12:03
davandr, честно говоря у меня такое никогда не глючило. Но по правде всегда вместо MyControl myControl писал Control myControl
Первый способ это попытка привести и если не получится, то Exception, AFAIK.
А второй способ, если не получится привести, то возвращает null.

Автор: tol05 19.6.2007, 12:29
Mymik, очень правильно сформулировал!  smile  Второй способ - мягкое приведение типов, но только для ссылочных (для int не подойдет)

davandr, что значит глючит? Какое сообщение пишет? вообще-то правильный вариант, как я в MSDN поглядел, второй

Автор: davandr 19.6.2007, 14:26
Цитата(tol05 @  19.6.2007,  12:29 Найти цитируемый пост)
davandr, что значит глючит? 

 
Говорит, что не может привести типы контролов. "Unable to cast .... "

Причем я заметил такое часто бывает именно со своими контролами и мастер пагами.

Автор: tol05 19.6.2007, 16:31
Код

<%@ Reference Control="MyControl.ascx" %>

есть?
или давай код покажи.

Автор: SpaceSpace 25.6.2007, 08:30
пробуй указывать абсолютный путь(~). и ВСЕГДА пиши раширение (.ascx)

Код

MyControl mc = (MyControl)Page.LoadControl("~/Controls/MyControl.ascx");

Автор: davandr 26.6.2007, 17:19
Бесполезно ((

Автор: SpaceSpace 27.6.2007, 07:08
код давай. посмотрим.

Автор: davandr 27.6.2007, 15:51
Дык, код-то собственно я уже и дал, только название класса контрола другое.
В какой момент начинает глючить - загадка. 
Раз проглючит, перекомпилю контрол, все работает (какое-то время), потом заново..
Я думаю это все-таки студия глючит.

Автор: SpaceSpace 28.6.2007, 07:00
в общем  скорее всего что-то потустороннее. попрыгай с бубеном, должно помочь. Или монитор поменяй,
и мышь(из-за неё все, точно говорю)

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

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)