2

ASP.NET MVC 4 を使用して Web アプリケーションを作成しています。

すべてのページにユーザーのニックネームを表示したいので、 でロードする必要があり_layout.cshtmlます。

ユーザーのニックネームを手動で保存していることに注意してください。(自分のデータベースと自分のテーブルで。)

でユーザーのユーザー名を追加できますMembership.GetUser().UserNameが、データベースからニックネームを読み込んで に表示したいです_layout.cshtml

どうやってするか?

4

3 に答える 3

2

あなたが望むものの簡単な解決策を教えてください:コントローラーにアクションを書きます(私のものはCommonControllerです):

    public ActionResult NickName()
    {
        SqlConnection cn = new SqlConnection(cnstr);
        SqlCommand cmd = new SqlCommand(cmdStr, cn);
        cn.Open();
        SqlDataReader dr = cmd.ExecuteReader();
        string nickName = string.Empty;

        while (dr.Read())
        {
            nickName = dr["nick_Name"].ToString();
        }

        dr.close()
        return Content(nickName);
    }

_Layout 内の任意の場所に以下の行を挿入します。

         nickname = @{Html.RenderAction("NickName", "Common");}

終了した!

推奨してくれた @SergRogovtsev に感謝します。

       nickname = @Html.Action("NickName", "Common")

最初の質問: エンティティ フレームワークを使用していますか? EF または ADO を使用して、_Layout で部分ビューを使用できます。エンティティ フレームワークを使用して aspnet_membership テーブルにアクセスできない場合は、別の方法で質問する必要があります。

コードのサンプルを提供して、問題について詳しく教えてください。

于 2012-08-04T11:59:12.507 に答える
1

ログイン時に、ユーザー名をセッション変数に保存することをお勧めします (これは、データを自由に保存および取得できるキー = 値ペア アーキテクチャを実装する Session オブジェクトにアクセスすることによって行われます)。ロードするすべてのページに対してデータベース呼び出しを行わなければならないのはパフォーマンスの低下であり、セッション内の単一のニックネーム文字列変数はサーバー上でそれほど多くのスペースを占有しません。

変数をロードする限り、Vahid によって投稿されたコードを使用できますが、サイトがまだ初期段階にある場合は、Entity Framework の学習と実装に余分な時間を費やすことをお勧めします。それはよりクリーンで簡単であり、Microsoft は実際にデータ接続管理をその方向に進めています。

于 2012-08-05T07:40:29.370 に答える
0

私はMr_CreostoeとVahidの回答を組み合わせて使用​​しました。

私はセッションにニックネームを保存しています(Mr_Cresotoeが言ったように)。そのようなセッションがない場合(たとえば、ユーザーが[私を覚えている]チェックボックスをオンにして、何度もアクセスしている場合)、を使用してそのセッションを作成しますRenderAction。(Vahidが言ったように)。

君たちありがとう!

于 2012-08-05T11:28:36.043 に答える