2012-07-14 4 views
0

이 질문은 기본적인 질문 인 것처럼 느껴지지만 저는 여전히 새로운 것입니다.ASP.NET 사용자 프로필 데이터를 다시로드하는 방법

ASP.NET TextBox 컨트롤 값 (예 : 사용자 이름, 약력 등)을 내 코드 숨김의 페이지 메서드에 전달한 다음이를 사용자의 프로필에 저장합니다. 이 모든 것이 제대로 작동하는 것 같습니다.

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

(주 - formValues는 AJAX Post에서 jQuery를 통해 제공됩니다.)

최근 업데이트 된 프로필 정보를 얻기 위해 수동으로 페이지를 새로 고치지 않고도 ASPX 웹 양식에 반영된 업데이트 된 프로필 정보를 확인하고 싶습니다. 이것이 가능한가?

여기 내를 Page_Load 방법

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

    } 
} 

나는이 메이크업 감각을 희망하고있는 무슨이다. 감사합니다.

+1

실제로 의미가 있습니다. 실제 디스플레이가 다른 UpdatePanel에있는 경우, 예를 들어, UpdatePanel을 강제로 새로 고침하여 사용자 프로필 데이터를 다시로드하게 할 수 있습니다. 다른 전략으로는 JavaScript를 통해 페이지의 텍스트를 직접 업데이트하는 방법이 있습니다. 확실하게 돕기 위해 프로파일 디스플레이가 UpdatePanel 내에서 호스팅되는지를 아는 것이 유용 할 것입니다. – dash

+0

@dash 답장을 보내 주셔서 감사합니다. 예, 현재 프로파일이 UpdatePanel에 표시되고 새로 고치려고했습니다. 또한 JavaScript를 통해 컨트롤을 업데이트하는 방법에 대해서도 생각했지만, UpdatePanel 방식으로 원하는 것을 얻을 수 있는지 알아볼 것입니다. 건배. – mulkraj

답변

0

dash의 제안에 따라 추가 읽기를 수행하면서 간단한 접근 방식 인 것처럼 구현했습니다 : UpdatePanel에 숨겨진 Button을 추가 한 다음 jQuery에서 숨겨진 Button에 대한 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(); 

    }; 

여기에 해당하는 숨겨진 버튼 nclick 이벤트 핸들러는 :

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

이 가장 우아한 방법이 될 않을 수도 있지만 그것은 작동하고 난 길을 따라 꽤 많이 배웠습니다. 귀하의 생각과 의견은 대단히 감사하겠습니다.

감사합니다.

관련 문제