| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Разработка под ASP.NET > Передача параметров из сгенерированной страницы |
| Автор: EASports 23.9.2008, 00:26 | ||
| Прошу помощи в таком вопросе: Создаю страницу новостей. Как должно быть: Заходим на страницу, происходит коннект к базе, запрос оттуда 20 последних записей из таблички News и через элемент asp:Repeater (или любой другой того же типа) происходит вывод ссылок с названиями новостей и датами их добавления. По щелчку по ссылке, должна открыться страница News.aspx, в которую должен передаться ID (из базы) ссылки (т.е. параметр), по которой произошёл щелчок. И соответственно по этому параметру уже должно отобразиться содержание нововсти. Вопросы: 1. Как в строке в блоке Repeater отобразить название и дату сразу? (Типа
2. Как сделать механизм передачи параметра в целевую страницу при щелчке по ссылке (на карайняк по кнопке)? Когда делал по кнопке, сразу после щелчка вылетала ошибка: "Недействительный аргумент обратной передачи или обратного вызова. Проверка события включена с помощью <pages enableEventValidation="true"/> в конфигурации или <%@ Page EnableEventValidation="true" %> на странице. В целях безопасности эта функция проверяет, что аргументы для событий обратной передачи или обратного вызова поступают из элемента управления сервера, сформировавшего их изначально. Если данные действительные и ожидавшиеся, используйте метод ClientScriptManager.RegisterForEventValidation, чтобы зарегистрировать данные обратной передачи и обратного вызова для проверки". И если можно, разъясните, что за такая ошибка и чем вызвана? |
| Автор: EASports 23.9.2008, 11:49 | ||||
Такое я уже пробовал. Не работает. "Перед директивами препроцессору могут находиться только символы пробелов".
Не катит. Это придётся тогда забивать в базу ID новости с параметрами в строку адреса. А я хочу, чтобы в базе хранился текст новости или там html-код в одном из полей, название, дата и ID. Ссылку не хочу хранить. На крайняк пусть это будет GET, но как сгенерировать из ID и заранее определённой страницы, будем считать, что это News.aspx? |
| Автор: wotker 23.9.2008, 14:14 | ||||
Ничего не понял. У тебя в базе хранится id новости. Почему ты не хочешь передавать его в качестве параметра?
а ссылку на страницу хранить никто и не предлагает |
| Автор: EASports 24.9.2008, 00:16 | ||||
Я согласен его передать в качестве параметра, объясни мне как провернуть следующее: Из базы грузятся названия и в скобочках даты новостей в количестве 20 штук (последних) и отображаются в виде гиперссылок, указывающих на страницу News.aspx, когда щёлкаешь по ссылке открывается страничка News.aspx, в которую любым методом передайтся идентификатор новости (который тоже запрашивается при запросе названия и даты из базы) и выводится текст новости. Просто объясни как передать из динамически сгенерированной ссылки параметр. Если можно, напиши простенький примерчик, в котором присутствует Repeater, к которому через DataSource присоединён массив параметров (id-шников например) в теле которого HyperLink'и, при щелчке по которым параметр отправляется в целевую страницу. Ну типа
|
| Автор: Idsa 24.9.2008, 04:22 | ||
|
| Автор: wotker 24.9.2008, 20:17 | ||
Idsa, только еще разделитель забыл
|
| Автор: EASports 24.9.2008, 21:04 |
| Сделал таким образом. Откомпилилось нормально, но при щелчке по ссылке переход произошёл на страницу, у которой в строке адреса вылезло следующее: "http://localhost:2357/WebPortal/%22~/News.aspx?"%20+%20<%#%20DataBinder.Eval(Container.DataItem,%20"Id")%20%>" Конфуз вышел. Может какой-то нюанс я забыл? Как принять-то бы теперь параметр в целевой странице? Да и ещё вопросик, реально ли как-нибудь в коде присвоить какой-нибудь переменной выражение <%#Container.DataItem%>, чтобы использовать это в создании ссылки? |
| Автор: Idsa 24.9.2008, 21:12 | ||
Финальная версия
|
| Автор: EASports 25.9.2008, 09:30 |
| То же самое. Адрес только теперь такой: "http://localhost:2357/WebPortal/%22~/News.aspx?id="%20+%20<%#%20DataBinder.Eval(Container.DataItem,%20"Id")%20%>" Дак чего, никто не знает, реально ли как-нибудь в коде присвоить какой-нибудь переменной выражение <%#Container.DataItem%>? |
| Автор: PashaPash 25.9.2008, 15:06 | ||||
EASports, неужели синтаксис датабиндинга настолько сложен, что на такие мелочи уходит по 3 дня?
Реально никакой переменной выражение <%#Container.DataItem%> присвоить нельзя. Потому что это выражение имеет смысл только в разметке страницы. |
| Автор: EASports 25.9.2008, 16:41 | ||
Спасибо большое, PashaPash. Именно это мне и было нужно. Выручил. А по поводу:
к сожалению ушло значительно больше 3 дней... Если бы знал синтаксис датабиндинга, сюда бы не обращался. Ещё раз спасибо. |