8

私はPHPで多くのウェブサイトを書きました。今、私は ASP MVC 4 (c#) で Web サイトを作成する必要があり、セッションで立ち往生しています。

IE ユーザーはログイン ページに移動し、ログインとパスワードを入力する必要があります。それらが正しい場合、コントローラーで、次のように UserId を使用してセッションを設定します。

Session["UserId"] = 10

この UserId 値は、PartialViews (ログイン フォームまたは (ログイン後) 一部のアプリケーション メニュー) を表示するために使用されます。Razor ビュー内でこの UserId を取得するにはどうすればよいですか?

この後、ビューで:

if (Session.UserId == 10) { @Html.Partial("LoggedMenu") }

StackOverflow で例外が発生しました。:/

4

3 に答える 3

14

あなたはそれを間違っています...

Session[<item name>]文字列を返す場合は、文字列とも比較するか、キャストする必要があるため、(int)Session["UserId"] == 10またはSession["UserId"] = "10".

Session.UserIdまた、NameValueCollection のように存在しないプロパティを呼び出す場合はSession、アイテム名である要求によって呼び出します。

最後に、あなたは書くべきです

@if (Session["UserId"] == "10") { 
    Html.Partial("LoggedMenu"); 
}

あなたはあなたが学んでいると言っているので、私は2つの簡単なことを指摘したいと思います:

  • ホームページhttp://asp.net/mvcで無料で利用できる ASP.NET MVC コースを利用する必要があります(「Essential Videos」を読んで右側)。
  • MVC3 プロジェクトを作成し、Membership を使用して箱から出してすぐに使用できるようにする方法を確認します
于 2013-06-08T23:14:04.693 に答える
1

以下に例を示します。

コントローラ:

    if (Session["pageInitCounter"] == null)
    {
        Session["pageInitCounter"] = 1;
    }
    else
    {
        int counter = Convert.ToInt32(Session["pageInitCounter"]);
        counter++;
        Session["pageInitCounter"] = counter;
    }

意見:

@Html.Hidden("pageInitCounter", Session["pageInitCounter"])

Javascript:

alert($("#pageInitCounter").val());
于 2015-10-28T14:50:46.127 に答える