Надо сделать такую же штуку. Чтобы по-умолчанию Default.aspx выводил данные из одной таблицы, с определённым параметром, например: Default.aspx?page=web, — выводил данные из другой таблицы совсем в другом виде и с другими контроллами, с возможностью редактировать и обновлять. Немного не понятна сама архитектура такого файла. Не делается же это всё блоками if...else или switch...case?
Может кто-нибудь объяснит или ссылку на документацию кинет. Буду премного благодарен!
Здравствуйте, Crazy Diamond, Вы писали: CD>Вопрос такой: как делаются сайты с одним управляющим файлом "Default.aspx"? CD>Например: http://aspnetmania.com или http://gotdotnet.ru . CD>Может кто-нибудь объяснит или ссылку на документацию кинет. Буду премного благодарен!
например http://www.mian.ru/ построен по такой технологии (правда обычный ASP). У нас юзается база данных и только она. Все берем оттуда. Как организовать ее в твоем случае — думай сам.
Простейший вариант — хранить в БД готовый HTML для отображения. В зависимости от параметра берешь нужный и показываешь.
Здравствуйте, Crazy Diamond, Вы писали:
CD>Вопрос такой: как делаются сайты с одним управляющим файлом "Default.aspx"? Например: http://aspnetmania.com или http://gotdotnet.ru .
CD>Надо сделать такую же штуку. Чтобы по-умолчанию Default.aspx выводил данные из одной таблицы, с определённым параметром, например: Default.aspx?page=web, — выводил данные из другой таблицы совсем в другом виде и с другими контроллами, с возможностью редактировать и обновлять. Немного не понятна сама архитектура такого файла. Не делается же это всё блоками if...else или switch...case?
CD>Может кто-нибудь объяснит или ссылку на документацию кинет. Буду премного благодарен!
Смотри System.Web.UI.WebControls.Panel. делаешь два таких котрола, для каждого случая, и в них вставляешь все, что тебе надо для вывода.
Здравствуйте, darkwolf, Вы писали:
D>Смотри System.Web.UI.WebControls.Panel. делаешь два таких котрола, для каждого случая, и в них вставляешь все, что тебе надо для вывода.
D>и потом меняешь св-во visible,
D>И собственно все.
Представляешь себе размер такой странички для целого сайта?
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, darkwolf, Вы писали:
D>>Смотри System.Web.UI.WebControls.Panel. делаешь два таких котрола, для каждого случая, и в них вставляешь все, что тебе надо для вывода.
D>>и потом меняешь св-во visible,
D>>И собственно все.
AVK>Представляешь себе размер такой странички для целого сайта?
AVK>
А кому сейчас легко
А на самом деле, не весь же код будет передаваться клиенту, а только та панель, которая visible=true, и если не нравиться впрямую вставлять код, то можно использовать User Controls пример хорошо описан здесь. Так что полигон, где развернуться есть.
Здравствуйте, darkwolf, Вы писали:
D>А кому сейчас легко D>А на самом деле, не весь же код будет передаваться клиенту, а только та панель, которая visible=true, и если не нравиться впрямую вставлять код, то можно использовать User Controls пример хорошо описан
Все равно это фиговая идея. Так можно сделать еслим у тебя 2-3 панельки. А когда их полсотни то это превращается черти во что. Да и не понятно зачем так извращаться если есть простое решение?
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, darkwolf, Вы писали:
D>>А кому сейчас легко D>>А на самом деле, не весь же код будет передаваться клиенту, а только та панель, которая visible=true, и если не нравиться впрямую вставлять код, то можно использовать User Controls пример хорошо описан
AVK>Все равно это фиговая идея. Так можно сделать еслим у тебя 2-3 панельки. А когда их полсотни то это превращается черти во что. Да и не понятно зачем так извращаться если есть простое решение?
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, darkwolf, Вы писали:
AVK>>>Да
D>>Нда...Ну чтож, удачи.
AVK>А что такой пессимизм то? Удача мне не нужна — тот проект где это применялось давно закончен.
Просто не думаю, что делая проект на ASP.NET использовать метод Server.Execute() было-бы оптимальным решением.
Здравствуйте, Gollum, Вы писали:
G>Здравствуйте, darkwolf, Вы писали:
D>>Просто не думаю, что делая проект на ASP.NET использовать метод Server.Execute() было-бы оптимальным решением.
G>Интересно было бы услышать, почему.
Потому что asp.net дает немного другие возможности, и философия его построена на использовании web contorls и др. классов .NET.
Здравствуйте, darkwolf, Вы писали:
D>Потому что asp.net дает немного другие возможности, и философия его построена на использовании web contorls и др. классов .NET.
A HTTPServer — это не класс .Net? И мне непонятно, чем же использование Server.Execute на различные aspx странички не вписывается в "философию" ASP.Net
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, Crazy Diamond, Вы писали:
CD>>Может кто-нибудь объяснит или ссылку на документацию кинет. Буду премного благодарен!
AVK>Server.Execute() спасет отца русской демократии
А спасет ли?
В общем случае все нормально, то есть спасет, но вот что непонятно и не нравится:
В самом тексте HTML, который можно посмотреть в браузере в form action будет другая страница, но с теми же параметрами
HTTP запроса. Например, если со страницы Default.aspx переходим на Default.aspx?Page=2, а при анализе запроса допустим
проверяем, если а Page = 2, то Server.Execute(“Second.aspx”); При этом в поле адреса браузера показывается
Default.aspx?Page=2, а вот если посмотреть на HTML код, тогда form action почему-то = “Second.aspx?Page=2”. А не как ожидалось
Default.aspx?Page=2. Почему это произошло?
Здравствуйте, Crazy Diamond, Вы писали:
CD>Вопрос такой: как делаются сайты с одним управляющим файлом "Default.aspx"? Например: http://aspnetmania.com или http://gotdotnet.ru .
CD>Надо сделать такую же штуку. Чтобы по-умолчанию Default.aspx выводил данные из одной таблицы, с определённым параметром, например: Default.aspx?page=web, — выводил данные из другой таблицы совсем в другом виде и с другими контроллами, с возможностью редактировать и обновлять. Немного не понятна сама архитектура такого файла. Не делается же это всё блоками if...else или switch...case?
CD>Может кто-нибудь объяснит или ссылку на документацию кинет. Буду премного благодарен!
А не проще ли сделать так — пишешь несколько Web User Controlo'ов — каждый из них соответствует какой — либо страничке, например MyControl1 и MyControl2
в Default пишешь
switch(MyPage)
{
case 1 :
{
Controls.Add((UserControl)LoadControl(MyControl1.ascx));
break;
}
}
Здравствуйте, Gollum, Вы писали:
D>>Просто не думаю, что делая проект на ASP.NET использовать метод Server.Execute() было-бы оптимальным решением.
G>Интересно было бы услышать, почему.
Во первых использование Server.Execute (в контексте первоначального вопроса) не является достаточным условием. И используя его мы можем получить сразу несколько проблем:
Пример 1.
Возьмем за основу первоначальный вопрос. Есть HttpHandler для default.aspx мы вызываем Server.Execute на another.aspx. итог: в сгенерированной странице атрибут action для тега form будет указывать на another.aspx. (хотя нам потенциально нужен default.aspx). Естественно, что это легко обходится, но все-таки.
Пример 2.
Совсем простой случай: мы определяем HttpHandler для *.aspx расширения. Как нам выполнить после этого исходную страницу? Естественно, что Server.Execute здесь не помошник.
Итого можно сказать, что: Использование Server.Execute не всегда позволяет достичь нужных целей, вносит дополнительную избыточнось и подходить к его использованию нужно очень осторожно.
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Здравствуйте, TK, Вы писали:
TK>Итого можно сказать, что: Использование Server.Execute не всегда позволяет достичь нужных целей, вносит дополнительную избыточнось и подходить к его использованию нужно очень осторожно.
Это высказывание применимо к очень и очень многим вещам.
Я считаю, что в контексте данного треда пользоваться вполне можно.
Здравствуйте, Gollum, Вы писали:
TK>>Итого можно сказать, что: Использование Server.Execute не всегда позволяет достичь нужных целей, вносит дополнительную избыточнось и подходить к его использованию нужно очень осторожно.
G>Это высказывание применимо к очень и очень многим вещам. G>Я считаю, что в контексте данного треда пользоваться вполне можно.
Только, вот про то, что нужно еще использовать HttpContext.RewritePath (кажется) никто не упомянул. А без него данное решение будет половинчатым.
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Здравствуйте, Аноним, Вы писали:
А>В самом тексте HTML, который можно посмотреть в браузере в form action будет другая страница, но с теми же параметрами А>HTTP запроса. Например, если со страницы Default.aspx переходим на Default.aspx?Page=2, а при анализе запроса допустим А>проверяем, если а Page = 2, то Server.Execute(“Second.aspx”); При этом в поле адреса браузера показывается А>Default.aspx?Page=2, а вот если посмотреть на HTML код, тогда form action почему-то = “Second.aspx?Page=2”. А не как ожидалось А>Default.aspx?Page=2. Почему это произошло?
HttpContext.RewritePath
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Здравствуйте, TK, Вы писали:
TK>Только, вот про то, что нужно еще использовать HttpContext.RewritePath (кажется) никто не упомянул. А без него данное решение будет половинчатым.
То что здесь предлагали (например сделать одну большую страницу с кучей панелей) еще хуже.
Здравствуйте, TK, Вы писали:
TK>Здравствуйте, Аноним, Вы писали:
А>>В самом тексте HTML, который можно посмотреть в браузере в form action будет другая страница, но с теми же параметрами А>>HTTP запроса. Например, если со страницы Default.aspx переходим на Default.aspx?Page=2, а при анализе запроса допустим А>>проверяем, если а Page = 2, то Server.Execute(“Second.aspx”); При этом в поле адреса браузера показывается А>>Default.aspx?Page=2, а вот если посмотреть на HTML код, тогда form action почему-то = “Second.aspx?Page=2”. А не как ожидалось А>>Default.aspx?Page=2. Почему это произошло?
TK>HttpContext.RewritePath
Не помогает!!!
Кстати выплыла такая проблема, что Server.Execute не работает из, например, события нажатия кнопки. Зато работает из PageInit.
Почему?
Ну, тогда можно результат отфильтровать... Или использовать альтернативные методы.
А>Кстати выплыла такая проблема, что Server.Execute не работает из, например, события нажатия кнопки. Зато работает из PageInit. А>Почему?
И какие симптомы этой неработы?
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[6]: Вопрос по архитектуре ASP.Net приложения.
От:
Аноним
Дата:
21.02.03 14:12
Оценка:
Здравствуйте, TK, Вы писали:
Удалено излишнее цитирование
А>>Кстати выплыла такая проблема, что Server.Execute не работает из, например, события нажатия кнопки. Зато работает из PageInit. А>>Почему?
TK>И какие симптомы этой неработы?
Вываливается и пишет: The View State is invalid for this page and might be corrupted.
Здравствуйте, TK, Вы писали:
А>>В самом тексте HTML, который можно посмотреть в браузере в form action будет другая страница, но с теми же параметрами А>>HTTP запроса. Например, если со страницы Default.aspx переходим на Default.aspx?Page=2, а при анализе запроса допустим А>>проверяем, если а Page = 2, то Server.Execute(“Second.aspx”); При этом в поле адреса браузера показывается А>>Default.aspx?Page=2, а вот если посмотреть на HTML код, тогда form action почему-то = “Second.aspx?Page=2”. А не как ожидалось А>>Default.aspx?Page=2. Почему это произошло?
TK>HttpContext.RewritePath
Вот Вы, TK, на все вопросы отвечаете ссылкой на метод HttpContext.RewritePath. И он действительно может помоч, но только если все переходы осуществляются методом GET. А как быть с методом POST? Как сделать так, чтобы все страницы постили данные на Default.aspx, а уже в нем делалась разводка по остальным страницам?
А так получается, что если делать Server.Execute("Find.aspx"), то в форме получается <form name="form" method="post" action="Find.aspx?action=020000" id="form">, а хотелось бы видеть вот такое:
<form name="form" method="post" action="index.aspx?action=020000" id="form">
И никак ты этот action не поменяешь.
А жаль...
Здравствуйте, Аноним, Вы писали:
AVK>>Server.Execute() спасет отца русской демократии
А>HTTP запроса. Например, если со страницы Default.aspx переходим на Default.aspx?Page=2, а при анализе запроса допустим А>проверяем, если а Page = 2, то Server.Execute(“Second.aspx”);
Как я понял, то такое решение не избавит нас от необходимости плодить *.aspx страницы. У нас лишь внешене будет видимость. А вот у меня другая задача:
1. Есть Глвное Меню — TOP. Аналг TabControl'a с выделением текущей вкладки
2. У каждого Раздела из TOP есть свое меню, которое отображается слева.
3. Существует множество так называемых страниц. Для каждой странице не обязательно есть свой пункт в TOP->LeftMenu. Ссылка на нее может встречаться просто в других страницах, но если в TOP->LeftMenu есть ссылка то ессно при просмотре этой страницы должен быть выделен соответсвующий TOP и соотв. пункт в LeftMenu.
Далее..
4. Страница может быть как статической, просто отображающей какой-либо текст, так и может содержать UserControl, который в свою очередь как правило явл-ся контролером как-ого либо бизнес-процесса, т.е. содержит в себе другие UserControls и переключает их.
Я описал все страницв в map.xml, создал еще один menu.xml и в нем слепил меню из нужных мне страниц, сделал свои структуры myMenuClass, myMapClass и кеширую в Application. При запросе default.aspx?t=page, смотрю какой page и генерирую соотв HTML для TOP и LeftMenu. Всем итим занимает один UserControl — Navigator, в в
default.aspx просто в нужных местах прописано <% nav.TopMenu(); %>, <% nav.LeftMenu(); %> текст для страниц подгружается из .inc указанных в map.xml, поскольку он редко меняется.
Но как быть с UserControls? Есть ли алтернатива предложенному здесь способу — т.е. не лепить их всех например на тот же Navigator и не щелкать visible=true|false?
Прокоментируйте плиз мое решение.
Re[15]: Вопрос по архитектуре ASP.Net приложения.
От:
Аноним
Дата:
05.08.03 00:17
Оценка:
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, TK, Вы писали:
TK>>Только, вот про то, что нужно еще использовать HttpContext.RewritePath (кажется) никто не упомянул. А без него данное решение будет половинчатым.
AVK>То что здесь предлагали (например сделать одну большую страницу с кучей панелей) еще хуже.
Здравствуйте, Crazy Diamond, Вы писали:
CD>Вопрос такой: как делаются сайты с одним управляющим файлом "Default.aspx"? Например: http://aspnetmania.com или http://gotdotnet.ru .
CD>Надо сделать такую же штуку. Чтобы по-умолчанию Default.aspx выводил данные из одной таблицы, с определённым параметром, например: Default.aspx?page=web, — выводил данные из другой таблицы совсем в другом виде и с другими контроллами, с возможностью редактировать и обновлять. Немного не понятна сама архитектура такого файла. Не делается же это всё блоками if...else или switch...case?
CD>Может кто-нибудь объяснит или ссылку на документацию кинет. Буду премного благодарен!
Здравствуйте, Crazy Diamond, Вы писали:
CD>Надо сделать такую же штуку. Чтобы по-умолчанию Default.aspx выводил данные из одной таблицы, с определённым параметром, например: Default.aspx?page=web, — выводил данные из другой таблицы совсем в другом виде и с другими контроллами, с возможностью редактировать и обновлять. Немного не понятна сама архитектура такого файла. Не делается же это всё блоками if...else или switch...case?
А что мешает взять словарь или хэш таблицу, и делать что-то типа
Dim myControl As Object
Dim myTable As New System.Collections.Specialized.StringDictionary
myTable("web") = "myUserControl1.ascx"
myTable("other") = "myUserControl2.ascx"Dim key As String = Request.Params("page")
myControl = LoadControl(myTable(key))
Здравствуйте, Crazy Diamond, Вы писали:
CD>Надо сделать такую же штуку. Чтобы по-умолчанию Default.aspx выводил данные из одной таблицы, с определённым параметром, например: Default.aspx?page=web, — выводил данные из другой таблицы совсем в другом виде и с другими контроллами, с возможностью редактировать и обновлять. Немного не понятна сама архитектура такого файла. Не делается же это всё блоками if...else или switch...case?
А почему бы не использовать готовые движки типа IBuySpy
Здравствуйте, thor, Вы писали:
T>Здравствуйте, Crazy Diamond, Вы писали:
CD>>Надо сделать такую же штуку. Чтобы по-умолчанию Default.aspx выводил данные из одной таблицы, с определённым параметром, например: Default.aspx?page=web, — выводил данные из другой таблицы совсем в другом виде и с другими контроллами, с возможностью редактировать и обновлять. Немного не понятна сама архитектура такого файла. Не делается же это всё блоками if...else или switch...case?
T>А почему бы не использовать готовые движки типа IBuySpy
Сам IbuySpy уже немного не в моде, стоит смотреть или Nuke или Rainbow
Здравствуйте, mogadanez, Вы писали:
R>>только столкнулся с проблемой, что тяжело раздать права в Web.Config R>> <location path="default.aspx?page=web"> R>> не понимает
M>имхо в таком случае права надо раздавать и проверять на уровне отдельных контролов- модулей.
да так и делаю, только не очень гибко, код править нужно если что..
... << RSDN@Home 1.1.0 stable >>
Re[4]: Вопрос по архитектуре ASP.Net приложения.
От:
Аноним
Дата:
04.01.04 11:33
Оценка:
Здравствуйте, oRover, Вы писали:
R>Здравствуйте, mogadanez, Вы писали:
R>>>только столкнулся с проблемой, что тяжело раздать права в Web.Config R>>> <location path="default.aspx?page=web"> R>>> не понимает
M>>имхо в таком случае права надо раздавать и проверять на уровне отдельных контролов- модулей.
R>да так и делаю, только не очень гибко, код править нужно если что..
зачем,сами права держать в базе или xml файлах.
модуль только проверяет.
Здравствуйте, oRover, Вы писали:
R>Здравствуйте, <Аноним>, Вы писали:
А>>зачем,сами права держать в базе или xml файлах. А>>модуль только проверяет.
R>да вот в каждом модуле это учитывать...
сделать базовый класс модуля, и наследовать от него все модули