|
|
Ответов: 0
|
25-02-12 07:01
|
|
|
|
Ответов: 0
|
16-01-12 20:13
|
|
|
|
Ответов: 1
|
09-01-12 11:23
|
|
   Web - программирование
|
|
|
   Программирование под ОС
|
|
|
   Web - технологии
|
|
|
   Базы Данных
|
|
|
|
Возможно вас заинтересует
|
|
Гостевая книга на ASP.NET
Ввведение
Этот проект дает возможность посетителям оставлять сообщения в гостевой книге на сайте. Проект состоит из двух частей:
· Создание сообщений.
· Просмотр гостевой книги.
База данных
Гостевая книга будет сохраняться в XML-файле guestbook.xml на сервере. Кодировка XML-файла изменена на ISO-8859-1, чтобы можно было обрабатывать специальные символы. Вот структура XML-файла:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<guestbook>
<guest private="yes">
<name>Laurent Kemp?t;/name>
<homepage url="http://perso.wanadoo.fr/laurent.kempe/">Tech Head</homepage>
<location>Illzach, France</location>
<comment>First to sign the guestbook ;)</comment>
<date>Thursday, May 30, 2002 - 10:29 AM</date>
</guest>
</guestbook>
|
|
Вам будет предложено ввести следующую информацию:
· Имя
· E-Mail
· Название домашней страницы
· URL домашней страницы
· Адрес
· Комментарии
· PRIVATE - Я хочу, чтобы только владелец сайта видел мой email
Приложение
Для того, чтобы иметь возможность легко изменять метод отображения гостевой книги, требуется разделить код и данные. Для выполнения этого требования я выбрал использование XSLT-преобразования XML-файла; при этом пользователям возвращается HTML-файл.
Создание сообщений
Страница, которая позволяет пользователям оставлять сообщения в гостевой книге, содержится в Web-форме 'Sign.aspx'. Эта страница требует от пользователя заполнить некоторые поля (textboxes) инфомацией, которая будет отображаться в гостевой книге. Чтобы проверять введенную информацию, мы используем RequiredFieldValidator. Кроме того, мы также используем RegularExpressionValidator для проверки адреса Email.
Когда посетитель заполнил все поля, он нажимает кнопку продолжения, и страница возвращает событие, перехватываемое методом ButtonContinue_Click. Этот метод загружает базу данных XML, получает информацию, введенную пользователем, и добавляет ее в начало XML-файла. Затем новая база данных сохраняется на диске сервера и пользователь перенаправляется на страницу просмотра.
private void ButtonContinue_Click(object sender, System.EventArgs e)
{
//Загрузить базу данных гостевой книги
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load( Server.MapPath("guestbook.xml") );
//Получить статус private
string strPrivate;
if ( CheckBoxPrivate.Checked )
strPrivate = "yes";
else
strPrivate = "no";
//Создать новый элемент
XmlElement elem = xmldoc.CreateElement("guest");
elem.SetAttribute("private", strPrivate);
//Добавить новое сообщение в первый узел
xmldoc.DocumentElement.PrependChild(elem);
addTextElement( xmldoc, elem, "name", TextBoxName.Text );
addTextElement( xmldoc, elem, "email", TextBoxEMail.Text );
addTextElement( xmldoc, elem, "homepage", TextBoxHomepageTitle.Text );
XmlAttribute newAttr = xmldoc.CreateAttribute("url");
newAttr.Value = TextBoxHomepageURL.Text;
elem.LastChild.Attributes.Append( newAttr );
addTextElement( xmldoc, elem, "location", TextBoxLocation.Text );
addTextElement( xmldoc, elem, "comment", TextBoxComments.Text );
//Записать дату
string strDate = DateTime.Now.ToLongDateString() +
" - " +
DateTime.Now.ToLongTimeString();
addTextElement( xmldoc, elem, "date", strDate );
xmldoc.Save( Server.MapPath("guestbook.xml") );
Response.Redirect("view.aspx");
}
|
|
Мы использовали метод addTextElement для построения нового сообщения пользователя в базе данных:
private void addTextElement( XmlDocument doc, XmlElement nodeParent,
string strTag, string strValue )
{
XmlElement nodeElem = doc.CreateElement( strTag );
XmlText nodeText = doc.CreateTextNode( strValue );
nodeParent.AppendChild( nodeElem );
nodeElem.AppendChild( nodeText );
}
|
|
Просмотр
Для просмотра всех записей гостевой книги мы добавили еще одну Web-форму 'View.aspx' в проект. В методе Page_Load мы загрузили базу данных XML и XSLT-файл. Мы выполнили преобразование и вывели результат в элемента управления Literal Web Form.
private void Page_Load(object sender, System.EventArgs e)
{
//Загрузить базу данных гостевой книги из xml-файла
XmlDocument doc = new XmlDocument( );
doc.Load( Server.MapPath("guestbook.xml") );
//Получить номер запрошенной страницы
string strPageAsked = Request.QueryString["page"];
//Если страница не определена, использовать первую
if ( strPageAsked == null )
{
strPageAsked = "1";
}
int nGuestPerPage = 5;
int nGuests = doc.ChildNodes[1].ChildNodes.Count;
int nPageAsked = System.Convert.ToInt32(strPageAsked);
int lowerbound = 1 + ( nPageAsked - 1 ) * nGuestPerPage;
int upperbound = lowerbound + nGuestPerPage - 1;
//Выполнить XSLT-преобразование
XslTransform xslt = new XslTransform();
xslt.Load( Server.MapPath("guestbook.xslt") );
//Построить список параметров XLST
XsltArgumentList xsltArgs = new XsltArgumentList();
xsltArgs.AddParam("lowerbound", "", lowerbound.ToString());
xsltArgs.AddParam("upperbound", "", upperbound.ToString());
//Преобразовать XML в HTML
MemoryStream ms = new MemoryStream();
xslt.Transform( doc, xsltArgs, ms );
ms.Seek( 0, SeekOrigin.Begin );
StreamReader sr = new StreamReader(ms);
//Вставить результаты в страницу View.aspx
LiteralGuests.Text = sr.ReadToEnd();
//Вставить навигатор страниц внизу страницы
int nPages = 0;
if (( nGuests % nGuestPerPage) != 0 )
nPages = 1 + (nGuests / nGuestPerPage);
else
nPages = (nGuests / nGuestPerPage);
LiteralGuests.Text += "Page(s) ";
for (int n = 1; n <= nPages; n++)
{
LiteralGuests.Text += "<font face='verdana' size='2'>"
LiteralGuests.Text += "<a href='/Guestbook/View.aspx?page=";
LiteralGuests.Text += n.ToString();
LiteralGuests.Text += "'>";
LiteralGuests.Text += n.ToString();
LiteralGuests.Text += "</a></font> ";
}
sr.Close();
}
|
|
Все преобразование из XML в HTML выполняются в файле guestbook.xslt. Это преобразование использует два параметра: lowerbound и upperbound, представляющие собой нижнее и верхнее значение индексов сообщений, соответствующие отображаемой странице гостевой книги.
Основное, что мы сделали - это цикл от lowerbound до upperbound и преобразование:
<xsl:for-each select="//guest[position() <= $upperbound and position() >= $lowerbound]">
<xsl:apply-templates select="name"/>
</xsl:for-each>
|
|
Вот пример преобразования, используемого для отображения посетителя и его email, если не определен флаг private:
<xsl:template match="name">
<xsl:choose>
<xsl:when test="../@private='yes'">
<font face="verdana" size="2">
<b><xsl:value-of select='.' /></b>
</font>
</xsl:when>
<xsl:otherwise>
<font face="verdana" size="2">
<b><a HREF="mailto:{../email}"><xsl:value-of select='.' ></a></b>
</font>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
|
|
Вы можете посмотреть файл guestbook.xslt для дальнейшей информации.
Заключение
Я хотел показать, что важно разделять данные от процессов их представления, и в этом очень помогает XML. Если вы хотите изменить представление гостевой книги, вам нужно только изменить файл guestbook.xslt.
|
qrtfwmhjxy
|
21-12-2011
|
zyvfF0 , [url=http://sivfdalpzujv.com/]sivfdalpzujv[/url], [link=http://pknjetcfjskn.com/]pknjetcfjskn[/link], http://bfqfbnpsxlnk.com/
|
|
|
hezbuxmlo
|
21-12-2011
|
mbwv2G <a href="http://vlsrxyccieqc.com/">vlsrxyccieqc</a>
|
|
|
gokupjgxc
|
19-12-2011
|
p4puRd , [url=http://zpkvzhphenlp.com/]zpkvzhphenlp[/url], [link=http://xznxiwwlfapq.com/]xznxiwwlfapq[/link], http://ymeqsoajggor.com/
|
|
|
lqytqhv
|
19-12-2011
|
dZSiQH <a href="http://xwbpoayyzghx.com/">xwbpoayyzghx</a>
|
|
|
Spike
|
18-12-2011
|
I love these articles. How many words can a wordsimth smith?
|
|
|
Игнат
|
29-10-2011
|
http://www.winforms.ru/ASPNET.aspx?f=4102011202857
Отличный курс на данную тему
|
|
|
Вася
|
13-12-2010
|
Очень мало информации, непонятно что и где писать, такая статья на многих сайтах, но толку от неё мало.
|
|
|
PHP
|
22-10-2009
|
Не могу сделать, выложите исходник
|
|
|
Артур
|
20-07-2009
|
На конец решил проблему с гостевой книгой благодаря данной статье. Советую всем!
|
|
Последние статьи: Web - программирование / ASP.NET /
| |
| | |
Делается это просто, кидаем на форму DropDownList и SqlDataSource. Для SqlDataSource - указываем строку подключения к базе данных и запрос, который будет выбирать данные. В DropDownList указываем какой DataSource использовать (DataSourceID=SqlDataSource1), а также настраиваем что будет отображаться (DataTextField=name), а что будет в качестве значения DataValueField=id. Вот в общем то и все... подробнее
|
Кол. просмотров: общее - 170756 сегодня - 1
|
|
Файл web.config используется для хранения глобальных параметров web-приложения. В файле web.config удобно хранить настройки для веб-приложения, ну хоть бы и параметры подключения к базе данных. В общем виде параметр добавляется так... подробнее
|
Кол. просмотров: общее - 88237 сегодня - 2
|
|
Сегодня попробуем смастерить форму для загрузки файла на сервер с помощью технологии ASP .NET
Итак, моздаем новый сайт в Visual Studio 2005 с сразу в папке проекта создаем папку files в которую будут попадать загруженные файлы... подробнее
|
Кол. просмотров: общее - 8229 сегодня - 0
|
|
Сейчас мы рассмотрим задачу выборки данных из таблицы с помощью обычных запросов, а также с помощью хранимых процедур... подробнее
|
Кол. просмотров: общее - 5808 сегодня - 0
|
|
Думаю многие хотя бы раз задавались вопросом: есть ли в ASP .NET include (инклуд) файлов, как например в PHP и SSI. Конечно в ASP .NET есть свои примочки такие как MasterPage и UserControls. Но все таки можно ли include?? :) Можно... подробнее
|
Кол. просмотров: общее - 6312 сегодня - 1
|
|
|
|