Профиль Asp.net не сохраняет или отображает введенные данные (Код обновлен) 28.10.12
Профиль Asp.net либо не отображает, ни сохраняет данные, которые вводит пользователь, однако ошибок нет. Вот вид кода ниже: веб-проект просто работает, и ничего не отображается ни на имени, ни на имени, ни фамилии.
Это веб-проект,, я открыл проект с помощью открытого веб-сайта!
ОДНАКО проект отображает его как "WEBPROJECT.sln(3)" в строке заголовка программы VISUAL STUDIOS.
Это когда пользователь создает учетную запись и сохраняет настройки профиля пользователя: новые и обновленные
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;
}
}
И это веб-конфиг: новый и обновленный
<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>
Это то, что отображается в aspnet_Profile на моем сервере sql:
[PropertyNames]
[ЬазШате: С:0:0: Имя: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;
1 ответ
Упростите это, удалив все свойства из 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;
}