0

我创建了一个网站,使用 SQL Server 自定义登录到我的数据库,并且想知道如何显示登录用户的文本。目前它在欢迎词旁边显示用户“登录”,但我宁愿显示用户的真实姓名。我是 MVC3 的新手,想知道如何更改 _LogOnPartial.cshtml 中的以下行以显示我的数据库“AgentFirstName”中的字段

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

这是我的 AccountControler

[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; }

使用这样的网络配置集

<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作为搜索键从数据库中获取用户信息。

假设您MyProject.Models.User从数据库中获得了一个返回的实例 - 然后您可以将此实例传递给Index视图,然后访问视图中的实例。

在视图中,您需要声明提供的模型的类型,在您的情况下是 migt @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 回答