質問

最近、この質問をしました anonユーザー選択方法(例:テーマ選択)。そしてWeb設定内のASP.NETプロファイルとそのプロパティについて学び始めました。私はリンクからの答えを試しましたが、私はprofile.newproperty

にアクセスできませんでした

プロファイル値を割り当てる方法? この質問は、Webアプリケーションがボックスからプロファイルをサポートしていないこと、およびProfileBaseに基づくカスタムモデルを作成する必要があることを指定します。問題は2009年に答えられ、これがまだ同じ場合であるかどうか知りたいと思いました。

ASP.NET 4.0 Webアプリケーションでは、アクセスするときを除き、C#をコードする必要なく、web.configのセクションで定義したプロパティを使用してProfile.Newpropertyにアクセスできます。

役に立ちましたか?

解決

私はあなたの質問を見ました、そうです

ここでは、匿名および認証されたユーザープロファイルを使用してMVCのプロファイルを操作するコードを表示します。

出力

匿名ユーザー - プロファイルセットはまだありません

ENTER ENTER IMENTDESCRUストレーション

匿名ユーザー - プロファイルセット

ENTER ENTERここにある

認証済みユーザー - プロファイル移行

画像の入力ここで

web.config

<anonymousIdentification enabled="true"/>
<profile inherits="ProfileInWebApplicationMVC1.UserProfile">
  <providers>
    <clear/>
    <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/" />
  </providers>
</profile>
.

UserProfileクラス

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" />
}
.

そして最後に、あなたが匿名ユーザーの場合あなたはあなた自身のプロフィールを持つことができますあなたがサイトに登録すると、あなたは migrate になる必要があります。あなたの新しいアカウントで使用されます。これは、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);
    }
.
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top