我创建了一个网站,使用SQL Server自定义登录我的数据库,想知道如何显示登录用户的文本。目前它显示用户“登录”旁边的单词welcome但我会而是显示用户的实际名称。 我是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; }
Unfortunatley我不知道你还需要什么来帮助我,但如果你需要什么,请问我会尽我所能。 谢谢你的帮助
答案 0 :(得分:1)
在Index
控制器的Home
操作中,您可以检查用户是否经过身份验证(使用User.Identity.IsAuthenticated
),如果是这种情况,您可以从中获取用户信息您的数据库使用User.Identity.Name
作为搜索关键字。
假设您获得了从数据库返回的MyProject.Models.User
实例 - 然后您可以将此实例传递到Index
视图,然后在视图中访问该实例。
在视图中,您需要声明所提供模型的类型,在您的情况下,migt为@model MyProject.Models.User
。然后,您可以在视图中访问User
模型实例,例如,打印属性,如名字和姓氏(或模型中可用的任何属性) - 模型实例的访问方式如下:{{ 1}}。
要查看如何将模型实例传递给视图并以强类型方式访问模型实例属性的示例,一个很好的示例可能是阅读“强类型模型和@model关键字“在this asp.net mvc3 tutorial。
答案 1 :(得分:0)
根据您的其他信息...您的问题的解决方案非常简单(至少解决您的问题,它不是很理想......但理想的解决方案要复杂得多)。
您只需基于AgentLogin查询您的Agents表,并使用User.Identity.Name作为条件。这允许您获取AgentFirstName并将其传递给您可以显示的模型。