ASP.NET Profile不更新certiain值?可能是代码问题

时间:2014-08-19 20:47:51

标签: c# asp.net profile

好吧,所以我一直在尝试创建一个使用基本性能分析功能的ASP.NET网站,到目前为止,我遇到了我必须显示和编辑配置文件的代码的问题信息。

基本上,在我的页面的顶部,它显示了“Screenname”和“Bio” - 两者都在web.config(下面)中以相同的方式定义。在我的页面中,我有两个文本框和一个保存按钮,IDed为AssignScreenname,AssignBio和ChangeProfileSaveButton 。单击保存按钮时, a if&否则,如果每次运行都检查其中一个框是空还是空字符串,并且如果不是那个值被分配给配置文件。然后,代码调用Profile.save()并将您重定向回同一页面,以确保完整刷新整个页面。

我的问题是当你分配一个值时,另一个值会被划掉。例如,指定Bio值意味着删除任何预先存在的Screenname值。我不明白为什么会这样做,因为它只应该将配置框分配给配置文件,因为它们中没有文本。

我还发现有趣的是删除Profile.Save()什么都不做,所以问题可能与此有关吗?

代码: 我的Web.Config元素:

<profile>
    <properties>
      <add name="Username"/>
      <add name="Screenname" />
      <add name="Bio" />
      <add name="ProfilePictureURL" />
    </properties>
  </profile>

我的C#分配值:

 protected void ChangeProfileSaveButton_Click(object sender, EventArgs e)
 {
    if (Page.IsValid)
    {
        if (AssignScreenName.Text != "" || AssignScreenName.Text != null)
        {
            Profile.Screenname = AssignScreenName.Text;
        }
        if (AssignBio.Text != "" || AssignBio.Text != null)
        {
            Profile.Bio = AssignBio.Text;
        }
    }
    Profile.Save();
    Response.Redirect("MyProfile.aspx");
    }
}

我会每天回来看看回答评论,所以如果你需要什么,请随时问!欢迎所有想法,谢谢!

1 个答案:

答案 0 :(得分:2)

更改Web.Config文件的System.Web部分以设置automaticSaveEnabled = false;

离。

<profile enabled="true" automaticSaveEnabled="false">

清洁代码:

if (Page.IsValid)
{
    if (!String.IsNullOrEmpty(AssignScreenName.Text) Profile.Screenname = AssignScreenName.Text;
    if (!String.IsNullOrEmpty(AssignBio.Text) Profile.Bio = AssignBio.Text;        
}
Profile.Save();
Response.Redirect("MyProfile.aspx");

您也可以使用:

Profile.SetPropertyValue("propertyname",newvalue);
Profile.Save();

示例:

Profile.SetPropertyValue("Screenname",assignscreenname.Text);
Profile.Save();

您想要设置的每个属性。