我刚刚看到您的问题,是的,您是对的,我发布的答案与网站有关,因此它不适用于 Web 应用程序或 MVC
在这里,我将向您展示使用匿名和经过身份验证的用户配置文件在 MVC 中使用配置文件的代码
输出
匿名用户 - 尚未设置个人资料
匿名用户 - 配置文件集
经过身份验证的用户 - 配置文件已迁移
网页配置
<anonymousIdentification enabled="true"/>
<profile inherits="ProfileInWebApplicationMVC1.UserProfile">
<providers>
<clear/>
<add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/" />
</providers>
</profile>
用户配置文件类
public class UserProfile : ProfileBase
{
public static UserProfile GetProfile()
{
return HttpContext.Current.Profile as UserProfile;
}
[SettingsAllowAnonymous(true)]
public DateTime? LastVisit
{
get { return base["LastVisit"] as DateTime?; }
set { base["LastVisit"] = value; }
}
public static UserProfile GetProfile(string userID)
{
return ProfileBase.Create(userID) as UserProfile;
}
}
家庭控制器
public ActionResult Index()
{
ViewBag.Message = "Welcome to ASP.NET MVC!";
var p = UserProfile.GetProfile();
return View(p.LastVisit);
}
[HttpPost]
public ActionResult SaveProfile()
{
var p = UserProfile.GetProfile();
p.LastVisit = DateTime.Now;
p.Save();
return RedirectToAction("Index");
}
索引视图
@if (!this.Model.HasValue)
{
@: No profile detected
}
else
{
@this.Model.Value.ToString()
}
@using (Html.BeginForm("SaveProfile", "Home"))
{
<input type="submit" name="name" value="Save profile" />
}
最后,当您是匿名用户时,您可以拥有自己的个人资料,但是,一旦您注册到该网站,您需要迁移您当前的个人资料以用于您的新帐户。这是因为 ASP.Net 成员资格会在用户登录时创建一个新的配置文件
Global.asax,迁移配置文件的代码
public void Profile_OnMigrateAnonymous(object sender, ProfileMigrateEventArgs args)
{
var anonymousProfile = UserProfile.GetProfile(args.AnonymousID);
var f = UserProfile.GetProfile(); // current logged in user profile
if (anonymousProfile.LastVisit.HasValue)
{
f.LastVisit = anonymousProfile.LastVisit;
f.Save();
}
ProfileManager.DeleteProfile(args.AnonymousID);
AnonymousIdentificationModule.ClearAnonymousIdentifier();
Membership.DeleteUser(args.AnonymousID, true);
}