gpt4 book ai didi

asp.net-mvc - 在 MVC Web 应用程序中访问 profile.newproperty

转载 作者:行者123 更新时间:2023-12-04 18:16:02 25 4
gpt4 key购买 nike

我最近问了这个问题How to persist anon user selection (ex: theme selection) .并开始了解 ASP.NET 配置文件及其在 Web 配置中的属性。我尝试了链接中的答案,但无法访问 profile.newproperty

How to assign Profile values?
此问题指定 Web 应用程序不支持开箱即用的配置文件,并且必须创建基于 ProfileBase 的自定义模型。这个问题在 2009 年得到了回答,我想知道这是否仍然是同样的情况。

在 ASP.NET 4.0 Web 应用程序中,我可以使用我在 web.config 部分中定义的属性访问 profile.newproperty,而无需编写 C# 代码,除非访问它。

最佳答案

我刚刚看到您的问题,是的,您是对的,我发布的答案与网站有关,因此它不适用于 Web 应用程序或 MVC

在这里,我将向您展示使用匿名和经过身份验证的用户配置文件在 MVC 中使用配置文件的代码

输出

匿名用户 - 尚未设置个人资料

enter image description here

匿名用户 - 配置文件集

enter image description here

经过身份验证的用户 - 配置文件已迁移

enter image description here

网页配置

<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;
}
}

家庭 Controller
    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");
}

索引 View
@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);
}

关于asp.net-mvc - 在 MVC Web 应用程序中访问 profile.newproperty,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11706950/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com