使用 ASP.NET MVC 从助手调用 User.Identity.GetUserId()

Call User.Identity.GetUserId() from Helpers with ASP.NET MVC

我是 ASP.NET MVC 新手,

我将一个 HTTP POST 方法从我的控制器移到了助手,但我无法从 System.Security.Principal.IIdentity 库调用 User.Identity.GetUserId()

为什么我不能使用助手提供的这个库?谢谢

您使用 User.Identity.GetUserId() 从控制器中获取的 User 对象的类型为 HttpContext.User

您可以使用位于 System.Web.

中的 HttpContext.Current 获取当前的 HttpContext

您还需要扩展方法的 using 语句。

using Microsoft.AspNet.Identity;
using System.Web;

public class MyClass()
{
    public void MyMethod()
    {
        // Get the current context
        var httpContext = HttpContext.Current;

        // Get the user id
        var userId = httpContext.User.Identity.GetUserId();
    }
}

如果您在辅助方法中检索该值,我个人建议将该值作为参数从您的控制器传入,因为它更清楚地表明它依赖于它?

如果将辅助方法移动到服务层等,则需要从控制器获取此值并将其作为参数传递。