Val*_*rie 6 c# asp.net-mvc razor
我有自定义授权的这个问题我的一些部分(我Views不想穿上PartialView),而是我使用If如下语句:
@if (item.CurrentComment.Id == Guid.Parse(ViewBag.UserId) || repository.IsUserInRoles(Guid.Parse(ViewBag.UserId),"Manager") )
{
<dd>
<a href="@Url.Action("EditComment", "Ticketing",new { id = item.CurrentComment.Id, ticketId = Model.Tickets.CurrentTicket.Id })" class="btn btn-primary btn-sm" data-toggle="tooltip" data-placement="left">Edit</a>
</dd>
<dd>
<a href="@Url.Action("RemoveComment", "Ticketing",new { id = item.CurrentComment.Id, ticketId = Model.Tickets.CurrentTicket.Id })" class="btn btn-danger btn-sm" data-toggle="tooltip" data-placement="left">Remove</a>
</dd>
}
Run Code Online (Sandbox Code Playgroud)
此刻,我将我UserId的控制器放入控制器并使用如下所示的ViewBag传递:
ViewBag.UserId = User.Identity.GetUserId();
Run Code Online (Sandbox Code Playgroud)
但我想知道如何GetUserId直接在剃刀中调用该方法,所以我不再使用ViewBag发送它.我尝试过使用User.Identity.但是Method is Unknown,我认为它不知道扩展名.有办法吗?
Col*_*inM 17
using在视图文件的顶部添加以下语句.
using Microsoft.AspNet.Identity;
在此之后,你应该可以使用
User.Identity.GetUserId()
只是想添加我的看法,因为上述两个回复对我来说都不起作用。
@using Microsoft.AspNetCore.Identity
@inject UserManager<IdentityUser> userManager
@if (project.CreatorId == userManager.GetUserId(User))
{
//do something
}
Run Code Online (Sandbox Code Playgroud)
我添加了
@using Microsoft.AspNetCore.Identity
@inject UserManager<IdentityUser> userManager
Run Code Online (Sandbox Code Playgroud)
到 _ViewImports.cshtml 因为我需要在多个视图中使用它。
如果有人正在寻找 ASP.NET Core 解决方案(就像我一个小时前一样),那么有一个适合您的解决方案:
@using Microsoft.AspNetCore.Identity
var user = await UserManager.GetUserAsync(User);
var userId = user?.Id;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4609 次 |
| 最近记录: |