我有以下代码来创建乐队资料:
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。
答案 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 question,here是另一个问题。
编辑:
要访问这些变量,您可以使用
var bandProfile = HttpContext.Current.Application["BandProfile"];
或
var bandProfile = BandProfile.Profile;
根据Microsoft:
ASP.NET包括应用程序状态,主要是为了与经典ASP兼容,以便更容易将现有应用程序迁移到ASP.NET。建议您将数据存储在应用程序类的静态成员中,而不是存储在Application对象中。
那就是说,你应该使用static
变量方法。通过调用ClassName.Variable
可以获得静态变量,并且在应用程序运行期间将存在静态变量。如果应用程序已关闭或变量以其他方式更改,您将丢失此信息。
为了保存信息,必须将此变量的内容写入外部源(数据库,文件等),并在应用程序启动时将其读入。