Опубликован: 14.11.2006 | Доступ: свободный | Студентов: 5898 / 532 | Оценка: 4.18 / 3.74 | Длительность: 16:37:00
ISBN: 978-5-9556-0085-7
Лекция 18:

Элементы управления и использование JavaScript

< Лекция 17 || Лекция 18: 12345
Аннотация: Некоторые элементы управления ASP .NET 2.0. Использование JavaScript, механизм обратного вызова.

Элемент управления FileUpload

Формы HTML позволяют загружать пользовательские файлы на сервер. Для этого нужно установить атрибут enctype как "multipart/form-data" и в нем должен находиться элемент <input type="file">. Элемент управления FileUpload облегчает эту работу. Нужно вставить его в форму, а enctype установится автоматически. Элемент состоит из строки ввода и кнопки с надписью Browse. Процесс загрузки начинается после подачи формы на сервер, обычно для этого вставляют еще одну кнопку:

<form id="form1" runat="server">
    <div>
        <asp:FileUpload ID="FileUpload1" runat="server" /><br>
        <asp:Button ID="UploadButton" runat="server"
            Text="Button" OnClick="UploadButton_Click" /><br><br>
            <asp:Label ID="Message" runat="server" Text="Label" 
BackColor="#FFC0C0" Width="354px"></asp:Label>
    </div>
    </form>

После того как файл загружен, FileUpload позволяет узнать его свойства. Файл находится в кэше сервера, пока не будет сохранен на диск методом SaveAs:

protected void UploadButton_Click(object sender, EventArgs e)
    {
        if (this.FileUpload1.HasFile)
        {
            try
            {
                FileUpload1.SaveAs("c:\\Uploads\\" + 
FileUpload1.FileName);
                Message.Text = "Имя файла: " +
                FileUpload1.PostedFile.FileName + "<br>" +
                FileUpload1.PostedFile.ContentLength + " кб<br>" +
                "Content type: " +
                FileUpload1.PostedFile.ContentType;
            }
            catch (Exception ex) 
            {
                Message.Text = "Ошибка: " + ex.Message.ToString();
            }        
        }
    }

Процесс сохранения может вызвать исключения, поэтому он заключен в блок try-catch.

Свойство PostedFile имеет тип HttpPostedFile. Можно перенаправить содержимое загруженного файла в файловый поток с помощью свойства InputStream.

MultiView

Элемент управления MultiView позволяет создавать несколько представлений одной страницы и переключаться с одного на другой. MultiView состоит из элементов View, в которых находится часть страницы. В каждый момент времени видимым является один из элементов View. Это определяется свойством ActiveViewIndex.

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

<asp:RadioButtonList ID="RadioButtonList1" runat="server" 
OnSelectedIndexChanged="RadioButtonList1_SelectedIndexChanged" 
AutoPostBack="True">
    <asp:ListItem Value="English"></asp:ListItem>
    <asp:ListItem Value="German"></asp:ListItem>
    <asp:ListItem Value="Russian"></asp:ListItem>
    </asp:RadioButtonList>
    <asp:MultiView ID="MultiView1" runat="server">
        <asp:View ID="View1" runat="server" >
        <b>We are glad to meet you on our yellow pages.</b>
        <br />
        <i>Information about over 8800 products and services.</i>
        </asp:View>
        <asp:View ID="View2" runat="server">
       <b>Wir sind erfreut Sie auf unseren Gelb-Seiten zu emp-
fangen!</b>
        <br />
        <i>Wir stellen zur Eur VerfЯgung Informationen von Яeber 
8800 Waren und Leistungen.</i>
        </asp:View>
        <asp:View ID="View3" runat="server">
        <b>Мы рады приветствовать вас на нашем сайте.</b>
        <br />
        <i>Предоставляем информацию о свыше чем 8800 товарах и 
услугах!</i>
        </asp:View>
    </asp:MultiView>

Переключение между представлениями происходит в обработчике списка переключателей RadioButtonList1:

protected void RadioButtonList1_SelectedIndexChanged(object 
sender, EventArgs e)
    {
        MultiView1.ActiveViewIndex = 
RadioButtonList1.SelectedIndex;
    }
< Лекция 17 || Лекция 18: 12345
Алексей Савельев
Алексей Савельев

https://technet.microsoft.com/en-us/library/ms143221(v=sql.105).aspx

Денис Прокофьев
Денис Прокофьев

Везде написано, что это самый независимый и простой в использовании навигационный элемент управления, что он работает сразу с web.sitemap и не требует определения SiteMapDataSource.

Моя карта сайта состоит из двух страниц, вложенных друг в друга. asp:Menu, asp:TreeView отбображаются как ожидалось, а вот asp:SiteMapPath - нет. Он не виден нигде. Однако на его месте формируется разметка: <span id="SiteMapPath1"><a href="#SiteMapPath1_SkipLink" style="position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden;">Проход по ссылкам навигации</a><a id="SiteMapPath1_SkipLink"></a></span> - т.е. элемент отрабатывает.

В словах xHTML это выглядит так: <asp:SiteMapPath ID="SiteMapPath1" runat="server" />. Причем не важно - внутри тега form или снаружи - всегда одинаково.

Т.к. другие нав. ЭУ работают через простой источник данных без ошибок, делаю вывод - карта составлена правильно. ИД: <asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" />

Карта: <?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
  <siteMapNode url="~/L11_1_simplePage.aspx" title="Страница 1"  description="Простая страница 1." >
    <siteMapNode url="~/L11_1SimplePage2.aspx" title="Страница 2"  description="Простая страница 2" />
  </siteMapNode>
</siteMap>

Почему так происходит? Вроде делаю все по примерам. VS Community 2015. NetFramework в проекте: v4.0.30319