所有代码

@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的新手,只是想知道为什么它不起作用? 以及如何解决它。 任何答复将不胜感激。

===============>>#1 票数:0

如果您使用的是SimpleMembership,则可能无法在Membership中使用该方法。 SimpleMembership不能为您提供一切(很简单),仅足以进行身份​​验证和授权。

或者,您可以将用户名添加到模型中,然后将其从控制器中传入。

===============>>#2 票数:0

感谢您的答复,但是我想出了解决问题的简单方法。 学习了一个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

  ask by JRascall translate from so

未解决问题?本站智能推荐: