通过应用程序访问配置文件ID

时间:2016-04-08 13:00:21

标签: c# asp.net-mvc

我有以下代码来创建乐队资料:

    var bandProfile = _profileService.CreateBandProfile(model.BandProfile, file, UserId);

    if (bandProfile != null)
    {
        userManager.AddToRole(UserId, "Band");
        //Store the bandprofile ID anywhere?
        return RedirectToAction("Index", "Welcome");
    }

不,我想存储并通过应用程序访问bandprofile ID。当用户使用个人资料登录时,可以访问它。

我该如何做到这一点?

例如,要获取userId,您可以通过应用程序执行此操作:

UserId = System.Web.HttpContext.Current.User.Identity.GetUserId();

我想做同样的事情,但是使用bandprofileId。

1 个答案:

答案 0 :(得分:0)

关于"正确性"存在一些争论。这样做(下面链接),但您可以将变量存储在HttpContext.Current.Application["BandProfile"]

if (bandProfile != null)
{
    userManager.AddToRole(UserId, "Band");
    //Store the bandprofile ID anywhere?
    HttpContext.Current.Application["BandProfile"] = bandProfile;

    return RedirectToAction("Index", "Welcome");
}

或者,您可以在某个类的某个地方使用static变量。

public static class BandProfile
{
    public static whatever Profile;
}

if (bandProfile != null)
{
    userManager.AddToRole(UserId, "Band");
    //Store the bandprofile ID anywhere?
    BandProfile.Profile = bandProfile;

    return RedirectToAction("Index", "Welcome");
}

以下是处理同一问题的related questionhere是另一个问题。

编辑:

要访问这些变量,您可以使用

var bandProfile = HttpContext.Current.Application["BandProfile"];

var bandProfile = BandProfile.Profile;

根据Microsoft

  

ASP.NET包括应用程序状态,主要是为了与经典ASP兼容,以便更容易将现有应用程序迁移到ASP.NET。建议您将数据存储在应用程序类的静态成员中,而不是存储在Application对象中。

那就是说,你应该使用static变量方法。通过调用ClassName.Variable可以获得静态变量,并且在应用程序运行期间将存在静态变量。如果应用程序已关闭或变量以其他方式更改,您将丢失此信息。

为了保存信息,必须将此变量的内容写入外部源(数据库,文件等),并在应用程序启动时将其读入。