ScriptManager.RegisterClientScriptBlock을 사용하여 서버 쪽에서 호출하는 Javascript 함수의 반환을 얻으려고합니다.ASP.Net은 UpdatePanel hiddenField에서 Return ScriptManager.RegisterClientScriptBlock을 얻습니다.
현재 내 javascript 함수는 UpdatePanel에 포함 된 HiddenField에 값을 저장합니다. 메서드를 호출하면 ScriptManager.RegisterClientScriptBlock을 실행 한 후 HiddenField 값을 가져 오지만 항상 이전 호출의 값을 반환합니다.
내 사용자 컨트롤 ASPX 사이드 :
<script>
var num = 0;
function getReturn() {
num = num + 1;
var hr= document.getElementById('<%= hdf.ClientID %>');
hRetorno.value = num;
}
</script>
...
<asp:UpdatePanel ID="up1" UpdateMode="Conditional" runat="server">
<ContentTemplate>
<asp:HiddenField ID="hdf" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
내 사용자 컨트롤 서버 측 코드 :
public String GetReturn()
{
return MyControl.jsGetReturn(this.Page, this.hdf);
}
private static String jsGetReturn(Page page, HiddenField hid)
{
ScriptManager.RegisterStartupScript(page, page.GetType(), "key", "getReturn();", true);
return hid.Value;
}
색인 페이지 ASPX 사이드 :
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<div style="width:720px; height:480px;">
<uc1:MyControl runat="server" id="MyControl1"/>
</div>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Button ID="btn" runat="server" OnClick="btn_Click" />
<asp:TextBox ID="txt" runat="server" ></asp:TextBox>
</ContentTemplate>
</asp:UpdatePanel>
지수 여기에 코드를 보여 페이지 서버 사이드 코드 :
protected void btn_Click(object sender, EventArgs e)
{
txt.Text = MyControl1.GetReturn();
}
그리고 RegisterClientScriptBlock을 호출 한 후 포스트 백을 수행하는 방법이 있습니까? 아니면 다른 방법이 있을까요? ks스! – Migue
@Migue 자바 스크립트에서 포스트 백을 트리거하는 것처럼 서로 충돌하는 것과 같이 왜 그런 것이 필요한지에 대한 귀하의 요구 사항에 명확하지 않습니다. 단지 'RegisterClientScriptBlock'을 호출 한 후에 그 값을 얻지 못하고 업데이트됩니다 대답, 더 많은 설명을 추가했습니다. –
Google지도 사용자 컨트롤을하고 있어요. 서버 측 메소드 (micontrol.insertMarker())와 같은 비동기 호출을 사용하여 마커를 넣을 수 있습니다. 그러나 control.getCenter() (항상 아약스 사용)와 같은 맵에서 정보를 가져올 수 없습니다. – Migue