[C#] __doPostBack () 사용 방법

ASP.NET에서을 사용하여 비동기 포스트 백을 만들려고하는데 어떻게 해야할지 모르겠습니다 __doPostBack(). 바닐라 JavaScript를 사용하고 싶습니다.

버튼 클릭과 같은 간단한 것이 __doPostBack()이벤트를 발생 시킬 수 있습니다 . 메커니즘이 어떻게 작동하는지 배우려고합니다.



답변

예를 들어 btnSave라는 버튼을 사용하여 웹 양식에서이를 시도 할 수 있습니다.

<input type="button" id="btnSave" onclick="javascript:SaveWithParameter('Hello Michael')" value="click me"/>

<script type="text/javascript">
function SaveWithParameter(parameter)
{
  __doPostBack('btnSave', parameter)
}
</script>

그리고 코드 뒤에는 값을 읽고 그에 따라 다음과 같은 것을 추가하십시오.

public void Page_Load(object sender, EventArgs e)
{
  string parameter = Request["__EVENTARGUMENT"]; // parameter
  // Request["__EVENTTARGET"]; // btnSave
}

시도해보고 그것이 당신에게 효과가 있는지 알려주십시오.


답변

이것은 또한 FancyBox 및 / 또는 jQuery Dialog 내에서 서버 측 컨트롤을 포스트 백 할 수있는 좋은 방법 입니다. 예를 들어 FancyBox-div에서 :

   <asp:Button OnClientClick="testMe('param1');" ClientIDMode="Static"  ID="MyButton"  runat="server" Text="Ok" >
</asp:Button>

자바 스크립트 :

function testMe(params) {
    var btnID= '<%=MyButton.ClientID %>';
    __doPostBack(btnID, params);
}

서버 측 Page_Load :

 string parameter = Request["__EVENTARGUMENT"];
 if (parameter == "param1")
     MyButton_Click(sender, e);


답변

여기의 간단한 튜토리얼 방법에 대한 __doPostBack()작품.

솔직히 말해서, 나는 그것을 많이 사용하지 않습니다. 적어도 직접적으로. 많은 서버 컨트롤 (예를 들어, Button, LinkButton, ImageButton,의 부품 GridView등)를 사용하여 __doPostBack자신의 포스트 백 메커니즘.


답변

에 대한이 게시물에 무언가를 추가하고 싶습니다 asp:button. clientId를 시도했지만 작동하지 않는 것 같습니다.

__doPostBack('<%= btn.ClientID%>', '');

그러나 UniqueId를 얻는 것은 다음과 같이 서버에 다시 게시되는 것처럼 보입니다.

__doPostBack('<%= btn.UniqueID%>', '');

나중에 다른 사람에게 도움이 될 수 있으므로 게시 할 수 있습니다.


답변

오래된 질문이지만 무언가를 추가하고 싶습니다 : 호출 doPostBack()할 때 작업에 서버 핸들러 메소드를 사용할 수 있습니다.

예를 들어 :

__doPostBack('<%= btn.UniqueID%>', 'my args');

서버에서 실행됩니다.

protected void btn_Click(object sender, EventArgs e)

인수를 얻는 더 좋은 방법을 찾지 못했지만 여전히을 사용하고 Request["__EVENTARGUMENT"]있습니다.


답변

다른 사람들이 말했듯이 __doPostback () 메서드에 컨트롤의 UniqueID를 제공해야합니다.

__doPostBack('<%= btn.UniqueID %>', '');

서버에서 제출 된 양식 값은 페이지에서 필드 의 이름 속성으로 식별됩니다 .

UniqueID가 작동 하는 이유 는 서버 컨트롤이 HTML로 렌더링 될 때 UniqueID이름 이 실제로 동일하기 때문입니다.

UniqueID가 무엇인지 설명하는 기사는 다음과 같습니다.

UniqueID 속성은 입력 필드 (확인란, 드롭 다운 목록 및 숨겨진 필드)의 HTML “name”속성 값을 제공하는 데에도 사용됩니다. UniqueID는 또한 포스트 백에서 중요한 역할을합니다. 포스트 백을 지원하는 서버 컨트롤의 UniqueID 속성은 __EVENTTARGET 숨겨진 필드에 대한 데이터를 제공합니다. 그런 다음 ASP.NET 런타임은 __EVENTTARGET 필드를 사용하여 포스트 백을 트리거 한 컨트롤을 찾은 다음 RaisePostBackEvent 메서드를 호출합니다.

src :
https://www.telerik.com/blogs/the-difference-between-id-clientid-and-uniqueid


답변

이것이 내가하는 방법입니다

    public void B_ODOC_OnClick(Object sender, EventArgs e)
    {
        string script="<script>__doPostBack(\'fileView$ctl01$OTHDOC\',\'{\"EventArgument\":\"OpenModal\",\"EncryptedData\":null}\');</script>";
        Page.ClientScript.RegisterStartupScript(this.GetType(),"JsOtherDocuments",script);
    }