SiteMapDataSource и XmlSiteMapProvider для преобразования описания структуры TreeView , Menu и SiteMapPath , непосредственно взаимодействующие с пользователем при выполнении Описание структуры Web.sitemap. Чтобы создать заготовку этого сайта, выполните следующее
В панели Solution Explorer выделите Оболочка создаст заготовку карты сайта с парным XML-<siteMap>... </siteMap> и вложенными <siteMapNode>. <siteMap> поддерживается одноименным классом System.Web.SiteMap, который обеспечивает доступ к иерархическому представлению сайта для выполнения
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
<siteMapNode url="" title="" description="">
<siteMapNode url="" title="" description="" />
<siteMapNode url="" title="" description="" />
</siteMapNode>
</siteMap>
После создания заготовки файла Web.sitemap ее нужно правильно скорректировать, чтобы она соответствовала структуре сайта. При этом нужно соблюсти два обязательных условия:
От этого зависит правильная работа класса-поставщика XmlSiteMapProvider, который непосредственно считывает и расшифровывает информацию из файла Web.sitemap. Для считывания информации из файла другого формата потребуется другой нестандартный поставщик.
Корневой узел и все последующие вложенные в него родительские (раскрывающиеся) узлы иерархического дерева карты сайта должны быть представлены парными <siteMapNode>...</siteMapNode>. <siteMapNode>.
В качестве примера определим карту сайта так, чтобы организовать иерархию страниц сайта некоторой компании по категориям

Скорректируйте заготовку файла Web.sitemap, созданного нами ранее, следующим образом(рис ) Пример определения карты сайта в файле Web.sitemap<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
<siteMapNode url="~/Default.aspx" title="Домой"
description="Корневой узел (домашняя страница)">
<siteMapNode url="~/Products.aspx" title="Товары"
description="Что мы продаем">
<siteMapNode url="~/Hardware.aspx" title="Аппаратура"
description="Компьютеры и комплектующие" />
<siteMapNode url="~/Software.aspx" title="Программы"
description="Программное обеспечение компьютеров" />
</siteMapNode>
<siteMapNode url="~/Services.aspx" title="Услуги"
description="Наши услуги">
<siteMapNode url="~/Training.aspx" title="Обучение"
description="Обучение программированию" />
<siteMapNode url="~/Consulting.aspx" title="Консультации"
description="Консультации по эксплуатации" />
<siteMapNode url="~/Support.aspx" title="Поддержка"
description="Помощь в сопровождении программ" />
</siteMapNode>
</siteMapNode>
</siteMap>
Создание в приложении файла Web.sitemap в корне виртуального каталога автоматически инициирует запуск поставщика XmlSiteMapProvider. Его задача заключается в , который далее можно подключать для генерации , и . Технологическая цепочка извлечения и отображения данных об иерархии страниц сайта приведена на рисунке

Реализуем эту цепочку для нашего примера, в котором для организации механизма
Через контекстное меню панели Solution Explorer добавьте к корню Web-дерева сайта папку с именем MasterPages , в которой разместим шаблон для страниц, определяемых параметром URL узлов дерева карты сайта
Выделите папку
Заполните (рис ) Код мастер-страницы MasterPage.master<%@ Master Language="C#" %>
<script runat="server">
protected void Page_Init(object sender, EventArgs e)
{
if (Session["index"] != null)
{
// Восстанавливаем состояние радиосписка
RadioButtonList1.SelectedIndex = (int)Session["index"];
}
else
{
RadioButtonList1.SelectedIndex = 0;
}
SelectedIndexChanged(null, EventArgs.Empty);
}
protected void SelectedIndexChanged(object sender, EventArgs e)
{
if (RadioButtonList1.SelectedIndex == 0)
{
TreeView1.Visible = true;
Menu1.Visible = false;
}
else
{
TreeView1.Visible = false;
Menu1.Visible = true;
}
// Запоминаем состояние радиосписка
Session["index"] = RadioButtonList1.SelectedIndex;
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div style="text-align: center">
<h1 style="color: Red">
Пример использования карты сайта
</h1>
<table border="1" width="100%">
<tr>
<td colspan="2" style="text-align: center; background-color: Silver">
<!-- Сюда помещаются элементы управления навигацией -->
<asp:SiteMapPath ID="SiteMapPath1" runat="server">
<CurrentNodeTemplate>
<i><b style="color: Blue">
<asp:Label ID="Label1" runat="server"
Text='<%# Eval("title") %>'>
</asp:Label>
</i></b>
</CurrentNodeTemplate>
</asp:SiteMapPath>
</td>
</tr>
<tr>
<td style="width: 250px; vertical-align: top; background-color: Yellow">
<!-- Сюда помещаются элементы управления навигацией -->
<asp:TreeView ID="TreeView1" runat="server"
SelectedNodeStyle-Font-Bold="true"
SelectedNodeStyle-Font-Italic="true"
DataSourceID="SiteMapDataSource1" />
<asp:Menu ID="Menu1" runat="server" Orientation="Horizontal"
DynamicMenuItemStyle-BackColor="Yellow"
DataSourceID="SiteMapDataSource1" />
</td>
<td style="vertical-align: top; background-color: Aqua">
<!-- Сюда помещаются страницы, подгружаемые по уникальным URL узлов -->
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server" />
</td>
</tr>
</table>
<asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" />
<br />
<asp:RadioButtonList ID="RadioButtonList1" runat="server" AutoPostBack="true"
OnSelectedIndexChanged="SelectedIndexChanged"
BorderStyle="Solid" BorderColor="Red">
<asp:ListItem>Использовать TreeView</asp:ListItem>
<asp:ListItem>Использовать Menu</asp:ListItem>
</asp:RadioButtonList>
</div>
</form>
</body>
</html>
В приведенном шаблоне мы определили заголовок и таблицу, состоящую из двух строк и двух столбцов. Столбцы верхней строки мы объединили и поместили в нее элемент отображения пути и текущего положения пользователя из вкладки Navigation панели Toolbox.
В левом столбце таблицы мы разместили элементы отображения карты сайта и управления TreeView1 и Menu1 из вкладки Navigation панели Toolbox. В правом столбце мы зарезервировали место для загрузки страниц с содержимым, которые по атрибуту ContentPlaceHolderID
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server"> ... </asp:Content>
будут ссылаться на это место.
Вслед за таблицей (или в любом другом месте) мы разместили неотображаемый объект SiteMapDataSource1, который привязали к элементам TreeView1 и Menu1 через его свойство DataSourceID. Ниже разместили список радиокнопок, чтобы дать возможность пользователю менять элементы
В результате получится такой внешний вид

В блоке скриптов мы организовали механизм сохранения состояния списка между сеансами приложения, а также механизм смены элементов CurrentNodeTemplate элемента мы связали текстовую метку с атрибутом текущего узла карты сайта, определенной в файле Web.sitemap.
Теперь нужно создать сами страницы с содержимым, подгружаемым совместно с шаблоном по щелчкам на узлах дерева карты сайта.
В панели Solution Explorer щелкните правой кнопкой мыши на шаблоне MasterPage.master и выполните команду контекстного меню Add Content Page, чтобы создать заготовку страницы содержимого Default.aspx. Повторите это действие, чтобы создать 8 заготовок таких страниц
Присвойте этим страницам имена согласно XML-файлу карты сайта Web.sitemap:Default.aspxProducts .aspxHardware .aspxSoftware .aspxServices.aspxTraining .aspxConsulting .aspxSupport .aspx
Отредактируйте содержимое созданных заготовок страниц следующим образом| Default.aspx | <%@ Page Language="C#" MasterPageFile="~/MasterPages/MasterPage.master"
Title="Untitled Page" %>
<asp:Content ID="Content1" runat="Server"
ContentPlaceHolderID="ContentPlaceHolder1">
Это содержимое начальной (домашней) страницы Default.aspx,
где расположен титульный лист и другие "прибамбасы"
</asp:Content>
|
| Products.aspx | <%@ Page Language="C#" MasterPageFile="~/MasterPages/MasterPage.master"
Title="Untitled Page" %>
<asp:Content ID="Content1" runat="Server"
ContentPlaceHolderID="ContentPlaceHolder1">
Это содержимое страницы Products.aspx,
где расхваливаются товары, которые мы продаем
</asp:Content>
|
| Hardware.aspx | <%@ Page Language="C#" MasterPageFile="~/MasterPages/MasterPage.master"
Title="Untitled Page" %>
<asp:Content ID="Content1" runat="Server"
ContentPlaceHolderID="ContentPlaceHolder1">
Это содержимое страницы Hardware.aspx,
где перечислены компьютеры и комплектующие,
которыми мы торгуем (спекулируем)
</asp:Content>
|
| Software.aspx | <%@ Page Language="C#" MasterPageFile="~/MasterPages/MasterPage.master"
Title="Untitled Page" %>
<asp:Content ID="Content1" runat="Server"
ContentPlaceHolderID="ContentPlaceHolder1">
Это содержимое страницы Software.aspx,
на которой мы расхваливаем программное обеспечение,
сворованное у других, но выдаваемое за свое
</asp:Content>
|
| Services.aspx | <%@ Page Language="C#" MasterPageFile="~/MasterPages/MasterPage.master"
Title="Untitled Page" %>
<asp:Content ID="Content1" runat="Server"
ContentPlaceHolderID="ContentPlaceHolder1">
Это содержимое страницы Services.aspx,
на которой мы хвастаемся, что все можем и
в беде не покинем, а сами только и думаем,
как бы обобрать до нитки
</asp:Content>
|
| Training.aspx | <%@ Page Language="C#" MasterPageFile="~/MasterPages/MasterPage.master"
Title="Untitled Page" %>
<asp:Content ID="Content1" runat="Server"
ContentPlaceHolderID="ContentPlaceHolder1">
Это содержимое страницы Training.aspx,
на которой мы популярно объясняем для невежд,
почему Земля квадратная
</asp:Content>
|
| Consulting.aspx | <%@ Page Language="C#" MasterPageFile="~/MasterPages/MasterPage.master"
Title="Untitled Page" %>
<asp:Content ID="Content1" runat="Server"
ContentPlaceHolderID="ContentPlaceHolder1">
Это содержимое страницы Consulting.aspx,
где мы проводим консультации с нашими клиентами
</asp:Content>
|
| Support.aspx | <%@ Page Language="C#" MasterPageFile="~/MasterPages/MasterPage.master"
Title="Untitled Page" %>
<asp:Content ID="Content1" runat="Server"
ContentPlaceHolderID="ContentPlaceHolder1">
Это содержимое страницы Support.aspx,
на которой мы оказываем поддержку в сопровождении
программного обеспечения
</asp:Content>
|
В панели Solution Explorer переместите
Запустите приложение и испытайте его функциональностьРезультат для двух вариантов будет примерно таким


Элемент удобен для отображения текущего положения пользователя в иерархической цепочке, а также для быстрого перемещения вверх к корневому узлу. Но для возможности перемещения вниз по иерархии карты сайта его всегда нужно комбинировать с другими элементами управления
| Свойство | Описание |
|---|---|
ParentLevelsDisplayed |
Устанавливает длину отображаемой иерархической цепочки. По умолчанию равен -1, означающий, что будут показаны все родительские узлы |
PathDirection |
Устанавливает порядок отображения узлов:RootToCurrent - слева направо от корневого к текущемуCurrentToRoot - слева направо от текущего к корневому |
PathSeparator |
Определяет разделитель между отображаемыми узлами. По умолчанию равен символу ">" (больше) |
RenderCurrentNodeAsLink |
При включении в значение true отображает текущий узел как |
ShowToolTips |
Отключает в описании узлов файла Web.sitemap. По умолчанию имеет значение true - |
Как мы знаем, узлы карты сайта имеют, в том числе, свойства Url, и . Именно эти основные свойства и создает мастер оболочки в файле Web.sitemap. Если узел имеет атрибут Url, то пользователь щелчком на нем может переходить к связанной странице. Если в каком-то узле атрибут Url опустить, то узел по-прежнему будет отображаться в иерархии дерева, но не будет действовать как
До сих пор мы рассматривали взаимодействие с картой сайта без кода. Но это взаимодействие можно осуществлять и программно. В классе SiteMap, представляющем карту в целом, основные статические свойства RootNode и CurrentNode содержат ссылки на корневой и текущий узлы карты сайта как экземпляры класса SiteMapNode. Любой другой произвольный узел, например, "Консультации", можно найти по его URL таким кодом
SiteMapNode findNode = SiteMap.Provider.FindSiteMapNode("~/Consulting.aspx");
Далее с помощью свойств ParentNode, ChildNodes, NextSibling и PreviousSibling экземпляров класса SiteMapNode можно получить программный доступ к соседним узлам иерархии карты сайта.
| Свойство | Описание |
|---|---|
| ParentNode | Содержит ссылку на родительский по отношению к текущему (найденному) узел. В корневом узле возвращается null - ссылка |
| ChildNodes | Содержит ссылку на коллекцию дочерних узлов |
| HasChildNodes | Булево свойство, возвращающее true, если узел имеет дочерние узлы, иначе, false, если это |
| PreviousSibling | Возвращает ссылку на предыдущий узел того же уровня (родственный узел), иначе null, если этот узел единственный. Родственными называются узлы, имеющие одного и того же родителя |
| NextSibling | Возвращает ссылку на следующий родственный узел, иначе null, если этот узел единственный |
Например, следующий обработчик щелчка кнопки можно использовать для перехода к странице, связанной с родительским, по отношению к текущему, узлом
Response.Redirect(SiteMap.CurrentNode.ParentNode.Url);
Для примера модифицируем наше приложение так, чтобы динамически извлекать информацию из текущего узла карты сайта и отображать ее на странице.
Добавьте в Label с именами lblTitle и lblDescription. Код этого фрагмента будет таким<tr>
<td colspan="2" style="text-align: center">
<asp:Label ID="lblTitle" runat="server" />
: nbsp;
<asp:Label ID="lblDescription" runat="server" />
</td>
</tr>
Добавьте в LinkButton с именами lnkPrevious и lnkNext. Код этого фрагмента будет таким<tr>
<td colspan="2" style="text-align: center">
<asp:LinkButton ID="lnkPrevious" runat="server" Text="< Назад" />
nbsp;nbsp;nbsp;
<asp:LinkButton ID="lnkNext" runat="server" Text="Вперед >" />
</td>
</tr>
Добавьте в блок скриптов следующий кодprotected void Page_Load(object sender, EventArgs e)
{
// Информация о текущем узле
lblTitle.Text = SiteMap.CurrentNode.Title;
lblDescription.Text = SiteMap.CurrentNode.Description;
// Управление кнопкой "Назад"
if (SiteMap.CurrentNode.PreviousSibling != null)
{
lnkPrevious.PostBackUrl = SiteMap.CurrentNode.PreviousSibling.Url;
lnkPrevious.Enabled = true;
}
else
lnkPrevious.Enabled = false;
// Управление кнопкой "Вперед"
if (SiteMap.CurrentNode.NextSibling != null)
{
lnkNext.PostBackUrl = SiteMap.CurrentNode.NextSibling.Url;
lnkNext.Enabled = true;
}
else
lnkNext.Enabled = false;
}
Запустите приложение и убедитесь, что появилась новая функциональность и все работает!!!Интерфейс пользователя после новых изменений будет таким

Для пользователей,
Страница, которая будет размечена фреймами и отображать дочерние документы, называется управляющей. Чаще всего она является шаблоном, не содержащим своего отображаемого текста. Механизм
| Элемент | Описание |
|---|---|
<frameset> ... </frameset> |
Определяет число |
|
Атрибут <. Задает число строк в броузере или < определяет в окне 4 строки сверху вниз: первая строка будет высотой 70 |
cols |
Атрибут <. По аналогии с атрибутом делит область на столбцы и определяет их размеры в порядке следования в списке слева направо |
frameborder |
Необязательный атрибут <, который определяет наличие рамки в дочерних фреймах. Принимает значения "yes" или "no" |
< |
<, и определяющий содержимое текущего фрейма. Не имеет закрывающего |
src |
Атрибут <. Определяет URL отображаемого в текущем |
name |
Атрибут <. Определяет имя фрейма для целевой загрузки в него нового документа, адресуемого щелчком пользователя в управляющем документе на ссылке с дополнительным атрибутом . Если ссылка не содержит атрибута , то новый документ загружается во фрейм, где была расположена ссылка. Если все ссылки на управляющей странице должны выводить адресуемые документы в одном и том же с одинаковым значением в каждую ссылку можно в раздел < страницы, где содержатся ссылки, добавить <base |
|
Атрибут <. Управляет видимостью полос прокрутки. Может иметь следующие значения: - автоматическое появление полос прокрутки, если содержимое документа не помещается в - - |
noresize |
Атрибут <. Наличие этого атрибута запрещает пользователю изменение размеров фрейма посредством |
<noframes> ... </noframes> |
<, внутри которого может содержаться |
Приведем примеры.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> <html> <head> <title>Untitled Document</title> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> </head> <frameset rows="70%,*"> <frameset cols="*,*,*"> <frame src="Doc1.htm" name="Frame1" scrolling="no" noresize> <frame src="Doc2.htm" name="Frame2" scrolling="auto"> <frame src="Doc3.htm" name="Frame3" scrolling="auto"> </frameset> <frameset cols="*,*"> <frame src="Doc4.htm" name="Frame1" scrolling="no" noresize> <frame src="Doc5.htm" name="Frame2" scrolling="auto"> </frameset> </frameset> <noframes> <body> </body> </noframes> </html>

(рис ) Пример 2 управляющей HTML-страницы с фреймами<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<frameset cols="55%,*">
<frameset rows="*,*,*">
<frame src="Doc1.htm" name="Frame1" scrolling="no" noresize>
<frame src="Doc2.htm" name="Frame2" scrolling="auto">
<frame src="Doc3.htm" name="Frame3" scrolling="auto">
</frameset>
<frameset rows="*,*">
<frame src="Doc4.htm" name="Frame1" scrolling="no" noresize>
<frame src="Doc5.htm" name="Frame2" scrolling="auto">
</frameset>
</frameset>
<noframes>
<body>
</body>
</noframes>
</html>

Приведем пример использования
Вызовите для корневого узла проекта контекстное меню и командой Add New Item добавьте к проекту (шаблон HTML Page ) 4 HTML-страницы содержимого с именамиDoc1.htm Doc2.htm Doc3.htm Doc4.htm
Подпишите эти страницы соответствующим текстом в их <body >
Подобным же образом создайте страницу с именем Navigate .htm , содержащую ссылки на страницы содержимого, и заполните ее следующим кодом(рис ) HTML-код файла Navigate.htm<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Untitled Page</title>
</head>
<body>
<h1 align="center">
Навигационная панель</h1>
<table border="0" width="100%">
<tr>
<th>
<a href="Doc1.htm" target="DocView">Документ 1 </a>
</th>
<th>
<a href="Doc2.htm" target="DocView">Документ 2 </a>
</th>
<th>
<a href="Doc3.htm" target="DocView">Документ 3 </a>
</th>
<th>
<a href="Doc4.htm" target="DocView">Документ 4 </a>
</th>
</tr>
</table>
</body>
</html>
Создайте в корне виртуального каталога новую управляющую HTML-страницу с именем FramesControl.htm для размещения (рис ) HTML-код страницы FramesControl.htm<html>
<head>
<title>Untitled Document</title>
<meta content="text/html; charset=windows-1251" http-equiv="Content-Type">
</head>
<frameset rows="30%,*">
<frame name="Frame1" scrolling="no" src="Navigate.htm">
<frame name="DocView" scrolling="auto" src="Doc1.htm">
</frameset>
</html>
Запустите страницу и получите следующий результат
Удалите в документе Navigate.htm атрибуты target , а в заголовочной части этой же страницы Navigate.htm добавьте <base target ="DocView">. Убедитесь, что Теперь, когда мы познакомились с фреймами, настала пора использовать их в совокупности с картой сайта. Мы не будем сильно усложнять задачу и готовить для ссылок новые страницы. Воспользуемся готовыми страницами, которые ранее определили в файле Web.sitemap. Результат будет немного неказистым, но вполне проиллюстрирует использование
Добавьте в корень приложения активную страницу с именем FramesPage.aspx, в которой будут расположены (рис ) Управляющая страница FramesPage.aspx навигационной панели<%@ Page Language="C#" %>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<frameset rows="70, *">
<frame src="TitlePage.aspx" />
<frameset cols="30%, *">
<frame src="MenuPage.aspx" />
<frame name="MainFrame" src="Default.aspx">
</frameset>
</frameset>
<noframes>
<body>
<h1>Это управляющая страница-шаблон фреймов</h1>
</body>
</noframes>
</html>
Мы создали шаблон < присутствует только в альтернативном блоке для < и <div>, автоматически сгенерированный мастером. Страница с фреймами не требует обработки на сервере и ей бы больше подошло расширение .htm, но не будем мелочиться и оставим все как есть.
В первый фрейм, ассоциируемый с верхней строкой, будет загружена страница TitlePage.aspx с простым текстом заголовка. Во второй фрейм поместим страницу MenuPage.aspx, в которой будет располагаться элемент , связанный с файлом Web.sitemap карты сайта. В третий, именованный фрейм, изначально будет загружена готовая
Создайте новую страницу без файла отделенного кода с именем TitlePage.aspx и заполните ее следующим кодом(рис ) Страница TitlePage.aspx с текстом заголовка первого фрейма<%@ Page Language="C#" %>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div style="text-align:center">
<h2>Это заголовок панели навигации</h2>
</div>
</form>
</body>
</html>
Создайте новую страницу без файла отделенного кода с именем MenuPage.aspx и заполните ее следующим кодом(рис ) Страница MenuPage.aspx с элементами TreeView и SiteMapDataSource<%@ Page Language="C#" %>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TreeView ID="TreeView1" runat="server"
DataSourceID="SiteMapDataSource1"
SelectedNodeStyle-Font-Bold="true"
SelectedNodeStyle-Font-Italic="true"
Target="MainFrame" />
<asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" />
</div>
</form>
</body>
</html>
Обратите внимание на атрибут Target ="MainFrame " элемента TreeView , который устанавливает для всех ссылок узлов дерева один и тот же именованный фрейм страницы FramesPage.aspx.
Протестируйте Результат внешне будет примерно таким

Во фрейм с содержимым загружаются созданные нами ранее страницы с готовым управлением только для того, чтобы упростить иллюстрацию рассматриваемой темы. Они, в свою очередь, также способны содержать полноценные элементы управления. Загружаемая в третий фрейм страница содержимого подгружает связанную с ней
Обратите внимание, что при смене содержимого третьего фрейма содержимое строки адреса всегда указывает на управляющую страницу FramesPage.aspx. Это один из недостатков механизма
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.