0

SQL Server を使用してデータベースへのカスタム ログインを使用して Web サイトを作成しましたが、ログインしたユーザーのテキストを表示する方法を知りたいと考えています。ユーザーの実際の名前。MVC3 を初めて使用するので、_LogOnPartial.cshtml の次の行を変更して、データベース「AgentFirstName」のフィールドを表示する方法を知りたいです。

<text>Welcome <strong>@User.Identity.Name</strong>

これが私のAccountControllerです

[HttpPost]
    public ActionResult LogOn(LogOnModel model)
    {
        if (ModelState.IsValid)
        {
            if (DAL.MyWebsiteContextClass.userIsValid(model.AgentLogin, model.AgentPassword))
            {
                FormsAuthentication.SetAuthCookie(model.AgentLogin, false);

                return RedirectToAction("Index", "Home");
            }
            else
            {
                ModelState.AddModelError("", "The user name or password provided is incorrect.");
            }
        }
        return View(model);
    }

これが私のエージェントモデルです

public class Agents
{
    public virtual int ID { get; set; }
    public virtual string AgentFirstName { get; set; }
    public virtual string AgentLastName { get; set; }
    public virtual string AgentLogin { get; set; }
    public virtual string AgentPassword{ get; set; }

このように設定されたWeb構成で

<add name="MyWebsiteContextClass"
     connectionString="Data Source=My-SQL\SQLEXPRESS; Initial Catalog=MyWebsite; Persist Security Info=True;User ID=sa;Password=password"
     providerName="System.Data.SqlClient"/>

そして、これは私のコンテキストクラスにあります

public DbSet<Agents> AgentsPkg { get; set; }

残念ながら他に何が必要かわかりませんが、何か必要なことがあればお尋ねください。できる限りのことをさせていただきます。ご協力いただきありがとうございます

4

2 に答える 2

1

コントローラーのIndexアクションでHome、ユーザーが認証されているかどうか ( using を使用) を確認できます。その場合は、検索キーとしてUser.Identity.IsAuthenticated使用してデータベースからユーザー情報を取得できます。User.Identity.Name

DB から返されたのインスタンスを取得するとします。このインスタンスをビューMyProject.Models.Userに渡し、ビュー内のインスタンスにアクセスできます。Index

ビューでは、提供されたモデルのタイプを宣言する必要があります@model MyProject.Models.User。次に、ビューでモデル インスタンスにアクセスできますUser。たとえば、名前や姓などのプロパティを出力できます (またはモデルで使用可能なプロパティ)。モデル インスタンスには次のようにアクセスします@Model.FirstName

厳密に型指定された方法でモデル インスタンスをビューに渡し、モデル インスタンス プロパティにアクセスする方法の例を確認するには、この asp.net mvc3 チュートリアルの「厳密に型指定されたモデルと @model キーワード」セクションを参照してください。

于 2012-09-16T23:04:39.997 に答える
0

追加情報に基づいて...問題の解決策は非常に単純です(少なくとも問題の解決策、それは本当に理想的ではありません..しかし、理想的な解決策ははるかに複雑です)。

AgentLogin に基づいて Agents テーブルをクエリし、User.Identity.Name を条件として使用するだけです。これにより、AgentFirstName を取得してモデルに渡し、表示できるようになります。

于 2012-09-17T00:10:46.073 に答える