0

ASP.NET MVC のビューでは、次のようにプロファイルとプロファイル メンバーにアクセスできます。

<%= Profile.Name %> - <%= Profile.Karma %>

しかし、どうすれば Profile 変数を設定できますか? HttpContext.Current.Profile にあるようです。次のような CurrentUser メソッドを持つカスタム Profile クラスを作成しました。

static public Profile CurrentUser {
    get {
        return (Profile) (ProfileBase.Create(Membership.GetUser().UserName));
    }
}

Web.config でそのクラスを指定しています。

<profile inherits="MyProject.Models.Profile" defaultProvider="AspNetSqlProfileProvider" enabled="true">
    <providers>
        <clear />
        <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="ApplicationServices" applicationName="/" />
    </providers>
</profile>

これ:

var p = CurrentUser.Profile

プロファイルは正常に表示されますが、次のように設定することはできません。

HttpContext.Profile = CurrentUser.Profile;

HttpContext.Profile は読み取り専用であるためです。エラーが発生します:

エラー 18 プロパティまたはインデクサー 'System.Web.HttpContextBase.Profile' を割り当てることができません -- 読み取り専用です C:...\Controller.cs 26 17 MyProject

また、ログインしているユーザーの名前を通常の方法で右上に表示できるように、すべてのビューにプロファイルを割り当てる必要があります。どうすればいいですか?

4

3 に答える 3

0

おそらく、web.config で既定のプロファイル プロバイダーを設定しているはずです。

<profile defaultProvider="MyCustomProfileProvider">
  <properties>
    <!-- etc. -->
  </properties>
</profile>

MVCについてはわかりませんが、標準のasp.netには必要です。

于 2009-08-09T10:43:48.997 に答える
0

空の名前を取得した理由は、プロファイルを取得していなかったからではなく、データベース内のプロファイルが実質的に空だったからです (これは、コードの無関係なバグによるものです)。私が話したことはすべて、プロファイルを機能させるために必要なすべてでした.

于 2009-08-10T06:22:59.503 に答える
-1

ログインしたユーザーの名前を通常の方法で右上に表示できるように、すべてのビューにプロファイルを割り当てる必要があります

ログオン コントロールを作成し、コントロールにこれを記述できます。

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<%
    if (Request.IsAuthenticated) {
%>
        Welcome <b><%= Html.Encode(Page.User.Identity.Name) %></b>!
        [ <%= Html.ActionLink("Log Off", "LogOff", "Account") %> ]
<%
    }
    else {
%> 
        [ <%= Html.ActionLink("Log On", "LogOn", "Account") %> ]
<%
    }
%>

HttpContext オブジェクトにもユーザー プロパティがあります。

于 2009-08-09T02:47:00.550 に答える