登录asp.net webmatrix后显示名称

时间:2012-12-10 01:48:25

标签: asp.net webmatrix username

我使用Webmatrix中使用登录的初始站点模板构建了一个站点。用户登录后,它显示在顶部“Hello,(电子邮件地址)!”附近。

查看html代码,我看到了

Hello, <a id="logname" class="email" href="~/Account/Manage" title="Manage">@WebSecurity.CurrentUserName</a>!

我只是asp.net的初学者,但可以按照逻辑工作,所以我所做的是在数据库中添加一个'Name'字段,用于存储电子邮件和密码,并编辑注册页面,以便用户也可以输入他们的名字,它写入数据库没有问题。

现在我假设只是找到@ WebSecurity.CurrentUserName指向用户的电子邮件地址并将其指向“名称”字段的问题。然而,我搜索了高低,似乎无法在任何地方找到它。

所以我的下一个方法是使用面包店数据库教程中的代码,该教程从字段中获取数据并修改它以获取名称并将其显示在我想要的位置,我尝试在此处使用的代码:

@foreach(var row in db.Query(selectQueryString))

这似乎首先起作用,显示“你好,本!”但是如果我再做了一些帐户,它也会开始显示它们,所以过了一会儿我就得到了“你好,本,史蒂夫,格蕾丝等......”

即使我是初学者,我也意识到这段代码并不是我所需要的,但类似的东西只需要从当前登录的用户获取单个名称字段...我用Google搜索和搜索并且看到许多人想要同样的东西,除了它使用PHP或VB或不是Webmatrix的东西。

如果这是一个快速的答案,我会欣赏我需要的代码,或者指向正确的方向,任何帮助将不胜感激。提前谢谢..

1 个答案:

答案 0 :(得分:0)

讽刺的是,我在发布问题后找到解决方案的时刻,所以这里就是..

这是需要放在文件顶部的代码_SiteLayout.chtml

@{
var authenticatedUser = "";

if (WebSecurity.IsAuthenticated) {
authenticatedUser = WebSecurity.CurrentUserName;
var db = Database.Open("StarterSite");
var UserData = db.QuerySingle("SELECT Name FROM UserProfile WHERE LOWER(Email) = LOWER(@0)", authenticatedUser);
authenticatedUser = UserData.Name;
    }
}

StarterSite是数据库的名称,UserProfile是Table的名称,我将名称字段标记为Name(为了像我这样的初学者的目的而解释可能正在阅读此内容)

然后在html标记中我将@ WebSecurity.CurrentUserName更改为@authenticatedUser,现在它显示为:

Hello, <a id="logname" class="email" href="~/Account/Manage" title="Manage">@authenticatedUser</a>!

导致其所需的结果现在显示用户的姓名而不是他们的电子邮件地址。