0

Asp.netプロファイルは、ユーザーが入力したデータを表示または保存していませんが、エラーはありません。以下のコードのビューを次に示します。webprojectは実行されるだけで、firstnameとlastnameの両方のラベルに何も表示されません。


これはAWEBプロジェクトです、、、 OPEN WEBSITEを使ってプロジェクトを開きました!
ただし、プロジェクトでは、VISUAL STUDIOSのプログラムタイトルバーに「WEBPROJECT.sln(3)」と表示されます。

これは、ユーザーがアカウントを作成し、ユーザーのプロファイル設定を保存するときです:新規および更新

protected void CreateUserWizard_CreatedUser(object sender, EventArgs e)
{
    // Create an empty Profile for the newly created user
    ProfileCommon p = (ProfileCommon)ProfileCommon.Create(RegisterUser.UserName, true);

    // Save profile - must be done since we explicitly created it

    TextBox txtNewFirstName = (TextBox)RegisterUser.FindControl("txtNewFirstName");
    Profile.FirstName = txtNewFirstName.Text;


    TextBox txtNewLastName = (TextBox)RegisterUser.FindControl("txtNewLastName");
    Profile.LastName = txtNewLastName.Text;


    p.Save();
}

そして、これはそれが表示されるときです:新規および更新

<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
    if (!this.IsPostBack)
    {
            ProfileCommon p = this.Profile.GetProfile(this.User.Identity.Name);

            Label firstName = (Label)LoginView1.FindControl("firstName");
           Profile.FirstName = firstName.Text;


            Label lastName = (Label)LoginView1.FindControl("lastName");
           Profile.LastName = lastName.Text;


    } 
}

そしてこれはWeb設定です:新規および更新

 <profile defaultProvider="AspNetSqlProfileProvider" enabled="true">
  <properties>
    <add name="FirstName" type="String" serializeAs="String"/>
    <add name="LastName" type="String" serializeAs="String"/>
    <add name="Gender" type="String" serializeAs="String"/>
    <add name="BirthDate" type="DateTime" serializeAs="String"/>
    <add name="Occupation" type="String" serializeAs="String"/>
    <add name="Website" type="String" serializeAs="String"/>
    <group name="Forum">
      <add name="Posts" type="Int32" defaultValue="0"/>
      <add name="AvatarUrl" type="String" serializeAs="String"/>
      <add name="Signature" type="String" serializeAs="String"/>
    </group>
    <group name="Address">
      <add name="Street" type="String" serializeAs="String"/>
      <add name="PostalCode" type="String" serializeAs="String"/>
      <add name="City" type="String" serializeAs="String"/>
      <add name="State" type="String" serializeAs="String"/>
      <add name="Country" type="String" serializeAs="String"/>
    </group>
    <group name="Contacts">
      <add name="Phone" type="String" serializeAs="String"/>
      <add name="Fax" type="String" serializeAs="String"/>
    </group>
  </properties>

  <providers>
 <clear/>
    <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/"/>
  </providers>
</profile>

これは私のSQLサーバーのaspnet_Profileに表示されているものです:
[PropertyNames]
[LastName:S:0:0:FirstName:S:0:0:]

これは前のコードをやり直したので、以下の前のコメントは無視してください!

PreRenderメソッドも試しました:

<script runat="server">
protected void Page_PreRender(object sender, EventArgs e)
{
            ProfileCommon p = this.Profile.GetProfile(this.User.Identity.Name);

            Label firstName = (Label)LoginView1.FindControl("firstName");
           Profile.FirstName = firstName.Text;


            Label lastName = (Label)LoginView1.FindControl("lastName");
           Profile.LastName = lastName.Text;

}

しかし、エラーが発生します。 オブジェクト参照がオブジェクトのインスタンスに設定されていません。Profile.FirstName=firstName.Textの場合;

4

1 に答える 1

0

名と姓のプロパティを除くすべてのプロパティをWeb.Configから削除して、単純化します。絞り込んでみてください。

以下は私のために働きます。便宜上、anonymousIdentificationをtrueに設定しましたが、有効なメンバーシップWeb.Configエントリの完全な構文を示しました。

<configuration>
  <connectionStrings>
    <remove name="LocalSqlServer"/>
    <add name="LocalSqlServer" 
        connectionString="Initial Catalog=Test;Data Source=MYPCNAME;Integrated Security=SSPI;" providerName="System.Data.SqlClient"/>
  </connectionStrings>
  <system.web>
    <anonymousIdentification enabled="true"/>
    <profile>
      <properties>
        <add name="FirstName" type="System.String" allowAnonymous="true"/>
        <add name="LastName" type="System.String" allowAnonymous="true"/>
      </properties>
    </profile>
    <roleManager enabled="true"/>
    <authentication mode="Forms">
      <forms timeout="50000000"/>
    </authentication>
    <membership defaultProvider="SqlProvider">
      <providers>
        <clear/>
        <add name="SqlProvider" 
            type="System.Web.Security.SqlMembershipProvider"
            connectionStringName="LocalSqlServer" 
            enablePasswordReset="true" 
            requiresQuestionAndAnswer="false" 
            requiresUniqueEmail="false" 
            maxInvalidPasswordAttempts="5" 
            passwordAttemptWindow="10" 
            passwordFormat="Hashed" 
            minRequiredPasswordLength="7" 
            minRequiredNonAlphanumericCharacters="0" 
            passwordStrengthReqularExpression="0" 
            enablePasswordRetrieval="false" 
            applicationName="/"/>
      </providers>
    </membership>
    <compilation debug="true" targetFramework="4.0"/>
  </system.web>
</configuration>

    protected void Button1_Click(object sender, EventArgs e)
    {
        ProfileCommon p = (ProfileCommon)ProfileCommon.Create(fnTxt.Text 
            + lnTxt.Text, true);
        Profile.FirstName = fnTxt.Text;
        Profile.LastName = lnTxt.Text;

        p.Save();
    }

    protected void Page_PreRender(object sender, EventArgs e)
    {
        resultLabel.Text = Profile.FirstName + " " + Profile.LastName;
    }
于 2012-10-22T02:35:07.027 に答える