Krishna Veni Ответов: 1

Как настроить несколько карт сайта на одном сайте с помощью управления меню


На самом деле я должен был разработать asp.net проект.Этот проект состоит из двух участников
у меня было две мастер-страницы с соответствующими элементами управления меню для действий участников (admin, student).я использовал два файла sitemap (Web. sitemap,student. sitemap)
я настраивал несколько карт сайтов в одном файле web configure.я привязываю действия участника студента к элементу управления меню(с помощью in student masterpage)с помощью sitemap, но вместо действий администратора автоматически привязываюсь к главной странице студента, т. е. функциональность второго меню не работает должным образом.две главные страницы также связывают действия администратора, но я хочу привязать действия для соответствующих главных страниц с помощью 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="Admin.aspx" title="Home"  description="Home page" />
        <siteMapNode url="StudentRegistration.aspx" title="Student registration"  description="Studentregistration page" />
         <siteMapNode url="AddLearningmaterial.aspx" title="Add material" description="AddLearningmaterial">
             <siteMapNode url="Alphabets.aspx" title="Alphabets" description="Alphabets page"></siteMapNode>
             <siteMapNode url="Numbers.aspx" title="Numbers" description="Numbers page"></siteMapNode>
             <siteMapNode url="Animals.aspx" title="Animals" description="Animals page"></siteMapNode>
             <siteMapNode url="Fruits.aspx" title="Fruits" description="Fruits page"></siteMapNode>
             <siteMapNode url="Vegetables.aspx" title="Vegetables" description="Vegetables page"></siteMapNode>
         </siteMapNode>
        <siteMapNode url="Modifyingmaterial.aspx" title="Update material" description="Modifyingmaterial page"></siteMapNode>
    <!--<siteMapNode siteMapFile="student.sitemap"/>-->      
    </siteMapNode>
</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="Home.aspx" title="Home"  description="Home page" />
  <siteMapNode url="Viewmaterial.aspx" title="View material"  description="Viewmaterial page" >
    <siteMapNode url="ViewAlphabets.aspx" title="Alphabets" description="Alphabets page"></siteMapNode>
    <siteMapNode url="viewNumbers.aspx" title="Numbers" description="Numbers page"></siteMapNode>
    <siteMapNode url="viewAnimals.aspx" title="Animals" description="Animals page"></siteMapNode>
    <siteMapNode url="viewFruits.aspx" title="Fruits" description="Fruits page"></siteMapNode>
    <siteMapNode url="viewVegetables.aspx" title="Vegetables" description="Vegetables page"></siteMapNode>
   </siteMapNode>
    </siteMapNode>
</siteMap>


Настройка нескольких карт сайтов в файле webconfig:
<?xml version="1.0"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
  <system.web>
    <siteMap defaultProvider="SiteMapDataSource1">
      <providers>
        <clear/>
       <add name="SiteMapDataSource1" type="System.Web.XmlSiteMapProvider" siteMapFile="Web.sitemap" />
    <add name="SiteMapDataSource2" type="System.Web.XmlSiteMapProvider" siteMapFile="student.sitemap" />
      </providers>
    </siteMap>
    <compilation debug="true" targetFramework="4.5"/>
    <httpRuntime targetFramework="4.5"/>
  </system.web>
</configuration>




Админ.мастер:
<%@ Master Language="C#" AutoEventWireup="true" CodeFile="Admin.master.cs" Inherits="Admin" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
 <style type="text/css">
    body
    {
        font-family: Arial;
        font-size: 10pt;
    }
    .main_menu
    {
        width:240px;
        font-size:x-large;
        background-color: #8AE0F2;
        color: #000;
        text-align: center;
        height: 30px;
        line-height: 30px;
        margin-right: 5px;
    }
    .level_menu
    {
        width:257px;
        font-size:large;
        background-color: #000;
        color: #fff;
        text-align: center;
        height: 30px;
        line-height: 30px;
        margin-top: 5px;
    }

    .selected
    {
        background-color: #852B91;
        color: #fff;
    }
    /*.sub_menu
   {
        width: 110px;
        background-color: #000;
        color: #fff;
        text-align: center;
        height: 30px;
        line-height: 30px;
        margin-top: 5px;
   }
    .hover_menu
   {
        background-color: #990000;
        color:#fff;
   }
    .selected_menu
   {
      background-color: #FF6600;
   }*/
</style>
    <asp:ContentPlaceHolder id="head" runat="server">

    </asp:ContentPlaceHolder>
</head>
<body>
   <form id="form1" runat="server">
    <asp:Image ID="ImgELearn"  runat="server" AlternateText="E-Learning" Height="202px" ImageUrl="~/Images/Title logo.png" Width="1020px"  />    
       <div class="user">
           <asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" ShowStartingNode="false" />
           <asp:Menu ID="Menu" runat="server" DataSourceID="SiteMapDataSource1" Orientation="Horizontal"
    OnMenuItemDataBound="OnMenuItemDataBound">
    <LevelMenuItemStyles>
        <asp:MenuItemStyle CssClass="main_menu" />
        <asp:MenuItemStyle CssClass="level_menu" />       
    </LevelMenuItemStyles>
 <%--<DynamicMenuItemStyle CssClass="sub_menu" />
<DynamicHoverStyle CssClass="hover_menu" />
<StaticSelectedStyle CssClass="selected_menu" />
<StaticHoverStyle CssClass="hover_menu" />--%>

</asp:Menu>
       </div>  
    <div>
        <asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">
        
        </asp:ContentPlaceHolder>
    </div>
    </form>
</body>
</html>



Студент.мастер:
<%@ Master Language="C#" AutoEventWireup="true" CodeFile="Student.master.cs" Inherits="Student" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <asp:ContentPlaceHolder id="head" runat="server">
    </asp:ContentPlaceHolder>
</head>
<body>
 <form id="form1" runat="server">
    <asp:Image ID="ImgELearn"  runat="server" AlternateText="E-Learning" Height="202px" ImageUrl="~/Images/Title logo.png" Width="1020px"  />
     <div class="data">
      <asp:SiteMapDataSource ID="SiteMapDataSource2" runat="server" ShowStartingNode="false" />
         <%--<asp:SiteMapPath ID="SiteMapPath1"  runat="server" PathSeparator=" > " RenderCurrentNodeAsLink="false">
</asp:SiteMapPath>--%>
         <asp:Menu ID="Menu1" runat="server" DataSourceID="SiteMapDataSource2" Orientation="Horizontal"
    OnMenuItemDataBound="OnMenuItemDataBound">
    <LevelMenuItemStyles>
        <asp:MenuItemStyle CssClass="main_menu" />
        <asp:MenuItemStyle CssClass="level_menu" />       
    </LevelMenuItemStyles>
       </asp:Menu>
         
     </div>
 
    <div>
        <asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">
        
        </asp:ContentPlaceHolder>
    </div>
    </form>
</body>
</html>


Это мой код.Я думаю, что способ развития проекта правильный, но я чувствовал себя маленьким
ошибка в соответствии с картой сайта, управлением меню и конфигурацией web. config.если вы знаете, пожалуйста, исправьте код. я не знаю, что такое xmlsitemap defaultProvider. pls дайте мне о defaultProvider, а также дайте об атрибутах имени в add tag подробно.
я перепутал имена атрибутов имен, которые мне даны. пожалуйста, проверьте один раз.Помоги мне.

Что я уже пробовал:

i was configure the multiple sitemaps in one web configure file.i bind the student member activities to menu control(with in student masterpage)using sitemap but instead of admin activities are bind automatically to student master page i.e functionality of second menu not working properly.two master pages are also bind the admin activities but i want to bind the activities for corresponding master pages by using sitemap and menu control.

Krishna Veni

Пожалуйста, помогите me.it-это срочно

1 Ответов

Рейтинг:
0

Richard Deeming

То SiteMapDataSource контроль[^] будет по умолчанию привязываться к поставщику карты сайта по умолчанию, как указано в web.config файл.

Вы установили defaultProvider="SiteMapDataSource1", что указывает на Web.sitemap, так что оба SiteMapDataSource элементы управления будут использовать эту карту сайта по умолчанию.

Чтобы использовать другую карту сайта, Вам необходимо установить то SiteMapProvider собственность[^] к имени поставщика карт сайта, который вы хотите использовать:

<asp:SiteMapDataSource ID="SiteMapDataSource2" runat="server" 
    ShowStartingNode="false" 
    SiteMapProvider="SiteMapDataSource2"
/>

NB: То ID из SiteMapDataSource управление никак не связано с именем поставщика карты сайта. Установка обоих на одну и ту же строку не соединит их. Единственный способ изменить поставщика - Это использовать SiteMapProvider свойство в разметке, или то Provider собственность[^] из вашего кода-позади.