[英]ASP.NET MVC 4 Razor - Trying to find the username of a user
所有代码
@foreach (var item in Model)
{
<div class="Comment-Box">
<p>@item.UserId</p>
@(Membership.GetUser(item.UserId.ToString()).UserName)
@if (Membership.GetUser() != null)
{
if(User.IsInRole("Admin") || item.UserId == (int)Membership.GetUser().ProviderUserKey){
@Html.ActionLink("Delete", "DeleteComment", new { id=item.Id })
}
}
</div>
}
问题代码
@(Membership.GetUser(item.UserId.ToString()).UserName)
问题是,当我访问该页面时,该方法返回null并找不到用户名,我是ASP.Net和MVC 4的新手,只是想知道为什么它不起作用? 以及如何解决它。 任何答复将不胜感激。
如果您使用的是SimpleMembership,则可能无法在Membership中使用该方法。 SimpleMembership不能为您提供一切(很简单),仅足以进行身份验证和授权。
或者,您可以将用户名添加到模型中,然后将其从控制器中传入。
感谢您的答复,但是我想出了解决问题的简单方法。 学习了一个UserContext,我可以用它来获取Models文件夹中的用户名。
解决方案代码
<p>
@{
Amity.Web.Models.UsersContext db = new Amity.Web.Models.UsersContext();
}
</p>
@foreach (var item in Model)
{
<div class="Comment-Box">
<p>@item.UserId</p>
@db.UserProfiles.FirstOrDefault(user => user.UserId == item.UserId).UserName
@if (Membership.GetUser() != null)
{
if(User.IsInRole("Admin") || item.UserId == (int)Membership.GetUser().ProviderUserKey){
@Html.ActionLink("Delete", "DeleteComment", new { id=item.Id })
}
}
</div>
}
获取用户上下文
Amity.Web.Models.UsersContext db = new Amity.Web.Models.UsersContext();
获取用户名
@db.UserProfiles.FirstOrDefault(user => user.UserId == item.UserId).UserName
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.