| Украина, Киев |
Управление HTML-элементами в ASP.NET
Упражнение 7. Элемент управления HTMLInputFile
Класс HTMLInputFile позволяет программировать HTML-тег <input type="file">. Этот тег используется для работы с данными файла в пределах формы HTML. В теге <form> мы будем использовать атрибут enctype="multipart/form-data", без которого Web-страница выдаст ошибку. В нашем сценарии при нажатии кнопки страница будет загружать файл на сервер и выдаст сообщение при успешном завершении, в противном случае она должна отображать сообщение об ошибках, указывающих на причину сбоя.
Встретив тег <input type="file">, броузер автоматически размещает кнопку Browse рядом с текстовым полем, чтобы дать возможность пользователю через диалоговое окно выбрать выгружаемый на сервер файл. Нажатие кнопки Open размещает имя выбранного файла и путь к нему в текстовом поле страницы.
-
Добавьте
к проекту новую страницу (шаблон Web Form)
с именем HTMLInputFile.aspx и
файлом отделенного кода, назначьте ее стартовой для удобства
отладки -
Перейти
из режима Design визуального проектирования
в режим Source (то же самое можно сделать
через меню оболочки View/Code или контекстное
меню редактора страницы командой View Code ) -
Отредактируйте
интерфейсную часть страницы HTMLInputFile.aspx так
<%@ Page Language="C#" AutoEventWireup="true"
CodeFile="HTMLInputFile.aspx.cs" Inherits="HTMLInputFile" %>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Элемент управления HTMLInputFile</title>
</head>
<body>
<center>
<h1>
Элемент управления HTMLInputFile</h1>
<font color="#ff0000">
<h2 id="State" runat="server" />
</font>
<form id="form1" runat="server"
enctype="multipart/form-data" method="post">
Имя отсылаемого файла:
<input id="FileName" runat="server"
maxlength="30" type="file">
<p />
Переслать под именем (без пути):
<input id="Text" runat="server" type="text">
<p />
<input id="TransferFile" runat="server"
type="button" value="Передать файл">
</form>
<hr>
<a id="PrevLink" runat="server">Назад</a>
<a id="NextLink" runat="server">Вперед</a>
</center>
</body>
</html>
Листинг
3.14.
Интерфейсная часть страницы HTMLInputFile.aspx
-
Перейдите
в режим дизайна страницы HTMLInputFile.aspx и
двойным щелчком на кнопке TransferFile создайте обработчик
в ассоциированном файле поддержки HTMLInputFile.aspx.cs -
Отредактируйте
файл поддержки HTMLInputFile.aspx.cs так
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 HTMLInputFile : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
PrevLink.HRef = "HTMLInputCheckBox.aspx";
NextLink.HRef = "HTMLInputHidden.aspx";
}
protected void TransferFile_ServerClick(object sender, EventArgs e)
{
if (FileName.Value == "")
{
State.InnerHtml = "Выберите отсылаемый файл";
return;
}
else if (Text.Value == "")
{
State.InnerHtml = "Введите имя целевого файла";
return;
}
if (FileName.PostedFile != null)
{
try
{
FileName.PostedFile.SaveAs("c:\ emp\\" + Text.Value);
State.InnerHtml = "Файл c:\ emp\\" +
Text.Value + " передан успешно на Web server";
}
catch (Exception exc)
{
State.InnerHtml = "Ошибка записи файла c:\ emp\\" +
Text.Value + "<br>" + exc.ToString();
}
}
}
}
Листинг
3.15.
Кодовый файл HTMLInputFile.aspx.cs
-
Постройте
проект. Результат внешне будет примерно таким
Упражнение 8. Элемент управления HTMLInputHidden
Этот класс позволяет программировать HTML-тег <input type="hidden">, который используется для скрытой передачи данных на сервер. Разработаем страницу, в которой сервер будет возвращать содержимое тега в открытом виде. Код управления объектом на C# разместим на странице вместе с интерфейсной частью.
-
Выполните
команду меню оболочки для вызова мастера добавления в
проект новой HTML-страницы с именем HTMLInputHidden.aspx
Расширение .aspx нужно для того, чтобы диспетчер страниц на стороне сервера при поступлении запроса от броузера на ее поставку, вначале передал страницу на обработку IIS-серверу.
-
Установите
режим Source редактирования новой страницы
и заполните ее кодом, приведенным ниже (интерфейсная и
кодовая части на одной странице)
<script runat="server" language="C#">
void ButtonShow_Click(object Source, EventArgs e)
{
State.InnerText = HiddenField.Value;
}
void ButtonHidden_Click(object Source, EventArgs e)
{
State.InnerText = "";
}
</script>
<html>
<head>
<title>Элемент управления HTMLInputHidden</title>
</head>
<body>
<center>
<h1>
Элемент управления HTMLInputHidden</h1>
<font color="#ff0000">
<h2 id="State" runat="server" />
</font>
<form id="form1" runat="server" method="post">
<p>
Нажмайте на кнопки для показа/сокрытия секретной информации</p>
<input id="ShowButton" runat="server"
onserverclick="ButtonShow_Click" type="button"
value="Показать секретную информацию">
<p>
</p>
<input id="HiddenButton" runat="server"
onserverclick="ButtonHidden_Click" type="button"
value="Скрыть секретную информацию">
<input id="HiddenField" runat="server" type="hidden"
value="Это скрытое значение поля Hidden">
</form>
<hr>
<a href="HTMLInputFile.aspx">Назад</a>
<a href="HTMLInputImage.aspx">Вперед</a>
</center>
</body>
</html>
Листинг
3.16.
Код страницы HTMLInputHidden.aspx
-
Сделайте
страницу стартовой и постройте приложение. Результат должен
быть таким
В этой странице мы не стали создавать ассоциированный файл CodeBehind для тренировки, хотя смешивать представление страницы и код управления ею не совсем удобно. Да и возможности по программированию в чисто кодовом файле C# привычнее. Мы, как программисты, внутри файла CodeBehind находимся в своей стихии и можем спокойно там расположить всю бизнес-логику управления представлением. Главное - чтобы были известны идентификаторы всех элементов управления, используемых на странице представления.


