0

私は管理ページを作成していますが、ユーザーがそこにいることを許可されていない場合は、数秒後にページをリダイレクトする必要があります。管理者がログインしたときに作成されたセッションがあるはずです。jqueryを使用してセッションが存在するかどうかを確認したいと思います。

これがc#コードです:

protected void Page_Load(object sender, EventArgs e)
{
    if ((string)Session["admin"] == null)
    {
        mainF.InnerHtml = "<div id='inner' style='margin-left:370px; margin-top:80px;font: 0.92em arial,sans-serif;word-spacing: 2px;font-weight: bold;'>Your Are Not Supposed To Be Here.</div>";
    }
}
public bool checkIfAllowed()
{
    bool isIt = false;
    if ((string)Session["admin"] != null && (string)Session["admin"] != "")
    {
        isIt = true;
    }
    return isIt;
}

基本的には、jqueryを使用してcheckIfAllowed()関数を呼び出して、セッションが存在するかどうかを確認できると思いましたが、方法がわかりません。

これは私が持っているものです:

if (!checkIfAllowed() /*which of course doesn't work*/) {
        var inter = setInterval(function () {
            window.location.replace("http://www.google.com");
        }, 3000);
    }
    else {
        clearInterval(inter);
    }

これを行うにはおそらく他の方法があります。解決策がある場合は教えてください。asp.netでページをリダイレクトすることもできると思いますが、最初は機能しませんでした。私も書いてみました

$("#inner").html != null && $("#inner").html != ""

asp.netのpageLoadで#innerhtmlが変更されているため、jqueryのif()ステートメントで。

ありがとう=]

4

3 に答える 3

0

あなたができることは次のとおりです。

var session ='<%= Session("VariableName")%>'
if (!session) {
        var inter = setInterval(function () {
            window.location.replace("http://www.google.com");
        }, 3000);
    }
    else {
        clearInterval(inter);
    }

または、HiddenFieldを使用してセッションからデータをロードし、JavaScriptのような値が存在するかどうかを確認することもできます。

var hiddenValue = document.getElementById('myHiddenField');
if (!hiddenValue ) {
            var inter = setInterval(function () {
                window.location.replace("http://www.google.com");
            }, 3000);
        }
        else {
            clearInterval(inter);
        }

これがお役に立てば幸いです。

于 2012-12-06T09:41:17.517 に答える
0

JavaScriptからサーバー側のメソッドを呼び出すには、aspxページにスクリプトマネージャーを登録する必要があります。eEnablePageMethodsはtrueに等しくなります。

<asp:ScriptManager ID="MyScriptManager" 
    EnablePageMethods="true" 
    EnablePartialRendering="true" runat="server" />

サーバー側のメソッドを属性[WebMethod](名前空間System.Web.Services

[WebMethod]
public static bool checkIfAllowed()
{
    ...
}

そして、JavaScriptコードの最後に、キーワードのプレフィックスが付いたサーバー側のメソッドを呼び出す必要がありますPageMethod

var isAllowed = PageMethods.checkIfAllowed();

編集 :

呼び出しは非同期であるため、関数の結果はコールバック関数で取得する必要があります。

PageMethods.checkIfAllowed(function(response) {
    if (!response) {
        var inter = setInterval(function () {
            window.location.replace("http://www.google.com");
        }, 3000);
    } else {
        clearInterval(inter);
    }
});

また、Webメソッドは静的である必要があるため、 ...HttpContext.Current.Sessionの代わりにを使用する必要があることにも注意してください。Session

于 2012-12-06T09:38:33.293 に答える
0

checkIfAllowed()googleajaxチュートリアルを呼び出すにはajaxを使用する必要があります

于 2012-12-06T09:38:37.097 に答える