Меню начальной загрузки в MasterPage не работает с содержимым / дочерними страницами внутри каталога

#asp.net #twitter-bootstrap

#asp.net #twitter-bootstrap

Вопрос:

В MasterPage есть меню начальной загрузки, которое отлично работает на страницах, находящихся в корневом каталоге, в то время как страницы в каталоге не заполняют выпадающее меню.

 http://localhost:3739/ServicePortal/Default.aspx (menu dropdown works
> perfectly)
  

в то время как

http://localhost:3739/ServicePortal/RegisteredUserPage/DataForm.aspx (menu drop down does not render/work)

Код меню начальной загрузки главной страницы приведен ниже:

 <div class="container">  

    <nav class="navbar navbar-default navbar-orange" role="navigation">
    <div class="container-fluid">
    <!-- Brand and toggle get grouped for better mobile display -->
    <div class="navbar-header">
        <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#myNav">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        </button>
        <a class="navbar-brand" href="#">O.S.L</a>
    </div>
    <!-- Collect the nav links, forms, and other content for toggling -->
    <div class="collapse navbar-collapse" id="myNav">
        <ul class="nav navbar-nav">
            <li><asp:HyperLink runat="server" ID="HomeHyperLink" NavigateUrl="~/Default.aspx" Text="Home"/></li>

            <li class="dropdown">
                <%--<asp:HyperLink runat="server" ID="HyperLink10" NavigateUrl="" Text="Services" class="dropdown-toggle" data-toggle="dropdown"></asp:HyperLink>--%> 
                <a href="#" class="dropdown-toggle" data-toggle="dropdown">Services <b class="caret"></b></a>
                <ul class="dropdown-menu">
                    <li><asp:HyperLink runat="server" ID="HyperLink1" NavigateUrl="#" Text="Education Services"/></li>
                    <li><asp:HyperLink runat="server" ID="HyperLink2" NavigateUrl="#" Text="Health Services"/></li>
                    <li><asp:HyperLink runat="server" ID="HyperLink3" NavigateUrl="#" Text="Bank Services"/></li>
                    <li><asp:HyperLink runat="server" ID="HyperLink4" NavigateUrl="#" Text="Hotels/Restaurents"/></li>
                    <li><asp:HyperLink runat="server" ID="HyperLink5" NavigateUrl="#" Text="Wedding Halls"/></li>
                    <li><asp:HyperLink runat="server" ID="HyperLink6" NavigateUrl="#" Text="Shops"/></li>
                </ul>
            </li>
            <li><asp:HyperLink runat="server" ID="HyperLink7" NavigateUrl="#" Text="Add Services"/></li>
            <li><asp:HyperLink runat="server" ID="HyperLink8" NavigateUrl="#" Text="Contact us"/></li>
            <li><asp:HyperLink runat="server" ID="HyperLink9" NavigateUrl="#" Text="About us"/></li>
        </ul>

        <ul class="nav navbar-nav navbar-right">

            <li><asp:HyperLink runat="server" ID="hylink" NavigateUrl="~Registration.aspx" Text="Register"/></li>

           <li class="dropdown">
            <a class="dropdown-toggle" href="#" data-toggle="dropdown"> <asp:Label ID="lab_loginStatus" runat="server" Text="Sign In"></asp:Label><strong class="caret"></strong></a>
            <div class="dropdown-menu" style="width:250px">
                <div class="loginfrm">
                    <!-- Login form here -->
                    <asp:TextBox ID="tbx_SignInName" runat="server" CssClass="form-control txtfocus-orange" placeholder="Sign In Name or Email"></asp:TextBox>
                    <asp:TextBox ID="tbx_SignInPassword" runat="server" TextMode="Password" CssClass="form-control txtfocus-orange" placeholder="Password"></asp:TextBox>
                    <div class="checkbox">
                        <asp:CheckBox ID="chkbox_SignInRememberMe" Text="Remember me" runat="server" />
                         <asp:Button ID="btn_SignIn" runat="server" CssClass="btn btn-orange pull-right" Text="Sign In" OnClick="btn_SignIn_Click" CausesValidation="false"/> 
                    </div>

                   <%-- <div class="horizentalDivider"></div>
                    <h6><asp:Label ID="lab_NotRegYet" runat="server" Text="Not Registered yet?"></asp:Label></h6>
                    <asp:LinkButton ID="link_SignUp" runat="server" Text="Register Now"></asp:LinkButton>--%>
                    <asp:Button ID="btn_Signout" runat="server" CssClass="btn btn-orange pull-right" Text="Sign Out" onClick="btn_Signout_Click" Visible="false" CausesValidation="false"/> 
                </div>
            </div>
           </li>
        </ul>
    </div><!-- /.navbar-collapse -->
    </div><!-- /.container -->
  

пожалуйста, помогите мне в этом отношении

Комментарии:

1. Где находятся ваши файлы начальной загрузки и как вы ссылались на них на главной странице?

2. ‘<link href=»CSS/bootstrap.css» rel=»stylesheet» />’аналогично файлы JavaScript в нижней части MasterPage’ <!— jQuery (necessary for Bootstrap’s JavaScript plugins) —> <script src=»JavaScript/jquery-2.1.0.js»></script> <!— Include all compiled plugins (below), or include individual files as needed —> <script src=»JavaScript/bootstrap.min.js»></script> <script src=»JavaScript/jquery.min.js»></script> <script src=»JavaScript/jquery.mobile.customized.min.js»></script>’

3. Файлы начальной загрузки находятся в: CSS/Bootstrap.min.css , а файлы Javascript находятся в Javascript / jquery-2.1.0 и Javascript /bootstrap.min

Ответ №1:

попробуйте использовать ResolveUrl() в src

 <script type="text/javascript" language="javascript" src="<%= ResolveUrl("~/Common/jquery-1.7.1.min.js") %>"></script>
<script type="text/javascript" language="javascript" src="<%= ResolveUrl("~/Common/jquery-ui-1.8.18.custom.min.js") %>"></script>
  

Ответ №2:

Основываясь на ссылках, которые вы указали в комментарии, я считаю, что вам нужно добавить тильды и косые черты в начало ваших ссылок, чтобы указать, что эти папки находятся в корне сайта. В противном случае браузер ищет их во вложенных папках, где находятся ваши страницы. Вот как это должно выглядеть:

 <link href="~/CSS/bootstrap.css" rel="stylesheet" /> 
<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->  
<script src="~/JavaScript/jquery-2.1.0.js"></script> 
<!-- Include all compiled plugins (below), or include individual files as needed -->
<script src="~/JavaScript/bootstrap.min.js"></script> 
<script src="~/JavaScript/jquery.min.js"></script> 
<script src="~/JavaScript/jquery.mobile.customized.min.js">
</script>
  

Комментарии:

1. Вы дали мне хороший намек, основная проблема заключается в ссылках на пути к файлам начальной загрузки, выше вы указали решение, которое я пробовал, но все равно оно не работает, я снова добавил все ссылки в localhost: 3739/ServicePortal/RegisteredUserPage/DataForm.aspx , т.е. Dataform.aspx ,теперь все работает нормально, я думаю, это неправильное решение, что ты говоришь?

2. @KhuramJan Если меню начальной загрузки находится на главной странице, вы должны разместить ссылки на свои скрипты на главной странице. Откройте браузер, перейдите на эту страницу. Посмотрите, правильно ли загружены скрипты / CSS. Что говорит Orilux, так это то, что вам нужно использовать корневые относительные пути, а не просто простые относительные.

3. @KhuramJan, я обновил пример, чтобы использовать «~», что должно решить проблему. Веб-сервер Visual Studio запускает ваше приложение в виртуальном каталоге, что вызывает проблему с относительными путями.