0

これは基本的な質問のように感じますが、私はまだ初心者です。

コード ビハインドのページ メソッドに ASP.NET TextBox コントロールの値 (ユーザー名、バイオなど) を渡し、これらをユーザーのプロファイルに保存しています。これはすべて正常に機能しているようです。

[WebMethod]
public static void UpdateProfile(Person formValues)
{
    HttpContext.Current.Profile.SetPropertyValue("Bio", formValues.Bio);
}

(注 - formValues は、jQuery を介して AJAX Post から提供されています)。

最近更新されたプロファイル情報を取得するために手動でページを更新しなくても、更新されたプロファイル情報が実際に ASPX Web フォームに反映されることを確認したいと考えています。これは可能ですか?

これが私の Page_Load メソッドで行っていることです

protected void Page_Load(object sender, EventArgs e)
{
    if(!Page.IsPostBack)
    {
        FirstName.Text = Profile.FirstName;
        Bio.Text = Profile.Bio;

    }
} 

これが理にかなっていることを願っています。ありがとうございました。

4

1 に答える 1

0

ダッシュの提案に従って、さらに読んで、単純なアプローチのように見えるものを実装しました。非表示のボタンをに追加し、UpdatePaneljQuery から非表示のボタンの onclick を呼び出します。

(更新されたプロファイル情報が jQuery UI ダイアログを介して収集されていたことに言及しましたか?)

関連する ASPX コードは次のとおりです。

    <!-- Change User Profile info -->
    <div id="profileBasicInfoDiv">
        <asp:UpdatePanel ID="UpdatePanel1" runat="server" ChildrenAsTriggers="True" UpdateMode="Conditional" Visible="True">
             <ContentTemplate>       
                 <asp:Label ID="lblProfileUserName" runat="server" Text="Name"></asp:Label>
                 <asp:Button ID="btnUserProfileUpdatePanel1" runat="server" Text="Button" Visible="True" onclick="btnUserProfileUpdatePanel1_Click" />        
            </ContentTemplate>     
       </asp:UpdatePanel>
       <br /> 
       <a href="#" id="hlShowBasicInfo">Change my details</a>
   </div> <!-- End of profileBasicInfoDiv -->

..jQuery:

 $("#profileChangeBasicInfo").dialog({
            modal: true,
            buttons: { 'Save': function () { $(this).dialog('close'); }                    
            },
            close: function () { UpdateProfile(); }

        });
 function UpdateProfile() {

        var jsonText = "{'Bio':'" + $("[id$='MainContent_Bio']").val() + "','FirstName':'" + $("[id$='MainContent_FirstName']").val() + "'} ";
        sendData(jsonText);
        $("#MainContent_btnUserProfileUpdatePanel1").click();

    }; 

非表示ボタンに対応する onclick イベント ハンドラーは次のとおりです。

  protected void btnUserProfileUpdatePanel1_Click(object sender, EventArgs e)
   {
        UpdatePanel1.Update();
        ((Label)(lblProfileUserName)).Text = Profile.FirstName + " " + Profile.LastName;
   }

これは最も洗練された方法ではないかもしれませんが、うまく機能しており、その過程で多くのことを学びました。ご意見やご感想をお待ちしております。

ありがとうございました。

于 2012-07-18T19:16:27.260 に答える