1

ASP.NET Web サイトを持っています。Masterpage に ASP.NET メニューがあります。現在のページがログインページの場合、メニューを非表示にしたい。私のログイン ページは Login.aspx です。メニューを非表示/表示にするコードは次のとおりです。

var pathname = window.location.pathname;
if (pathname.toLowerCase().indexOf("login.aspx") > 0)
    $('#mainmenu').hide();
else
    $('#mainmenu').show();

しかし、IIS に展開すると、Web サイトを初めて開いたときに URL にページ名が含まれていないため、メニューが表示されます。この場合、現在のページを特定するにはどうすればよいですか?

4

4 に答える 4

2

JavaScriptでそれをしたい場合は、以下のようにすることができます

var pathArray = window.location.pathname.split( '/' );

// assuming the url as http://www.example.com
var url_length = pathArray.length;
//if url is http://www.example.com, then url_length will have 3
//if url is http://www.example.com/login.aspx, then url_length will have 4

そう、

if( url_length==3 || pathArray[pathArray.length-1]=="login.aspx")
{
    $('#mainmenu').hide();
}
 else
 {
     $('#mainmenu').show();
 }

これがあなたを助けることを願っています。

于 2012-12-13T08:50:31.167 に答える
1

各「ページ」に特別な変数を指定します。これは、このシナリオの古典的な頼りになるものです。これは一般的に、スクリプト化された組み込みのメニュー システムですべてのページを区別し、強調表示、リンクの削除などの機能を提供できるようにするために使用されます。その仕組みは、各ページに特定の変数を設定することです。これは、メニュー システムによってテストされ、それに応じて実行されます。

同じ変数をさまざまな理由で再利用できます。たとえば、特定の機能を使用できるかどうかのテスト、ページ要素の組み込みなどです。

于 2012-12-13T09:32:06.357 に答える
1

ログイン画面で URL が変わらない場合、唯一のオプションは、ページのコンテンツを確認するか、Cookie を設定することです。サーバーに"pageIsLogin=true"Cookie のようなものを設定させ、それがあるかどうかを確認document.cookieします。

if(~document.cookie.indexOf("pageIsLogin=true")){
    //Login-specific settings here.
}else...

(他のページでその Cookie の設定を解除することを忘れないでください)

または、私の最初の提案のように、ページにログイン固有の要素が含まれているかどうかを確認します。

if(document.getElementById("loginSpecificField")){
    //Login-specific settings here.
}else...
于 2012-12-13T08:53:36.900 に答える
1

サーバー側の IMO で実行する必要があります。とにかく、Web アプリのアドレスがhttp://yourdomain.com/app/であり、ログイン ページがデフォルト ページであるとします。ユーザーが入力http://yourdomain.com/app/login.aspxしていなくても表示されるため、確認する必要があるのは、アドレスがで終わっているかどうyourdomain.com/app/かだけです。その場合、メニューを非表示にします。

var pathname = window.location.pathname;
var appDomainEndding = 'yourdomain.com/app/'
if (pathname.toLowerCase().indexOf("login.aspx") > -1 || 
    pathname.indexOf(appDomainEndding, pathname.length - appDomainEndding.length) > -1)
$('#mainmenu').hide();
else
$('#mainmenu').show();
于 2012-12-13T08:52:07.580 に答える