1

あいまいな質問で申し訳ありませんが、ここに行きます。

各ページには、さまざまなテーマ オプションを表示する部分ビューがあります。これらのテーマは、ページ内の要素の色の CSS クラスが異なるだけです。ユーザーがログインしていなくても、訪問者が別のテーマを選択できるようにし、その後のすべてのリクエストとセッションでそれを維持するにはどうすればよいですか?

これはクライアント側で行う必要があると思いますが、考えられるのはCookieのようなものだけです。残念ながら、ASP.NET でそれらを実際に試したことはまだありません。また、Google 検索は基本的な概念であるため、適切な表現を思いつきません。

誰かが私を正しい方向に向けることができれば、私はそれを感謝します. ありがとう

4

1 に答える 1

0

プロファイルと呼ばれる概念を使用できます

プロファイルを使用すると、ユーザーに公開するプロパティを宣言できます。これは匿名ユーザーに対して機能します

基本的に、プロファイル プロパティは Cookie に保存されるため、有効期限が切れるタイミングやその他の Cookie 関連の設定を構成できます。

プロファイルプロパティは、最上位の項目のコンパイル (ASP.Net の別名コンパイル ライフサイクル)の一部としてコンパイルされるため、Profileクラスを通じて厳密に型指定されたプロパティとして公開されます。

例えば:

Web.config 設定

<configuration>
  <system.web>
    <anonymousIdentification enabled="true"/>
    <profile defaultProvider="AspNetSqlProfileProvider" enabled="true">
      <properties>
        <add name="FirstName"/>
        <add name="LastName"/>
        <add allowAnonymous="true" name="LastVisit" type="System.Nullable`1[System.DateTime]"/>
        <group name="Address">
          <add name="Street"/>
          <add name="PC"/>
          <add name="InternalNumber" type="System.Int32" defaultValue="0"/>
        </group>
        <add name="EmployeeInfo" serializeAs="Binary" type="EmployeeInfo"/>
      </properties>
    </profile>
  </system.web>
</configuration>

コードでのプロファイルの使用 (この例では Global.asax)

void Application_EndRequest(object sender, EventArgs e)
{
    if (Profile != null)
    {
        Profile.LastVisit = DateTime.Now;
        Profile.Save();
    }
}

さらに、ASP.Net では、Microsoft AJAX コンポーネントを使用して JavaScript のプロパティにアクセスできます。

Web.config

<configuration>
  <system.web.extensions>
    <scripting>
      <webServices>
        <profileService enabled="true" readAccessProperties="LastVisit" writeAccessProperties="LastVisit"/>
        <jsonSerialization maxJsonLength="102400" recursionLimit="100" />
      </webServices>
    </scripting>
  </system.web.extensions>
</configuration>

ASPX

<script type="text/javascript" src="Scripts/jquery-1.7.2.min.js"></script>
<script type="text/javascript">
    $(function () {
        $("#profile").click(function () {
            Sys.Services.ProfileService.load();
            Sys.Services.ProfileService.properties.LastVisit = new Date();
            Sys.Services.ProfileService.save(
                null,
                function (m) {
                    alert(m);
                },
                function (e) {
                    alert(e);
                },
                null
            );
        });

        Sys.Services.ProfileService.load(null, function (r) {
            $("#res").append("<br/>");
            $("#res").append(Sys.Services.ProfileService.properties.LastVisit.toString());
            $("#res").append("<br/>");
        }, function (m) {
            $("#res").append(m.get_message());
        }, null);

    });
</script>

<asp:ScriptManager runat="server" ID="sm">
    <AuthenticationService />
    <ProfileService />
    <RoleService />
</asp:ScriptManager>
于 2012-07-29T03:12:24.000 に答える