programing

에서 포스트백 사용 안 함

powerit 2023. 7. 7. 21:13
반응형

에서 포스트백 사용 안 함

양식에 ASP.NET 연결 단추 컨트롤이 있습니다.클라이언트 쪽의 자바스크립트에 사용하여 서버에 다시 게시하는 것을 방지하고 싶습니다. (링크 버튼 컨트롤을 사용하여 스킨을 제거하고 경우에 따라 비활성화하고 싶기 때문에 스트레이트업 태그는 선호하지 않습니다.)

서버에 다시 게시되지 않도록 하려면 어떻게 해야 합니까?

ASPX 코드:

<asp:LinkButton ID="someID" runat="server" Text="clicky"></asp:LinkButton>

코드 배경:

public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {
        someID.Attributes.Add("onClick", "return false;");
    }
}

HTML로 렌더링되는 것은 다음과 같습니다.

<a onclick="return false;" id="someID" href="javascript:__doPostBack('someID','')">clicky</a>

이 경우 온클릭 기능이 검증자가 됩니다.거짓이면 "href" 링크가 실행되지 않지만, 사실이면 href가 실행됩니다.이렇게 하면 게시물이 다시 표시되지 않습니다.

이것은 도움이 되지 않는 대답처럼 들릴지도 모릅니다...그런데 왜 순수하게 클라이언트 쪽에 링크 버튼을 사용하는 겁니까?표준 HTML 앵커 태그를 사용하여 설정onclick작업을 Javascript에 적용합니다.

링크의 에는 "" " " " " " " 를 합니다.asp:Label앵커의 시작 태그와 끝 태그 사이에 있는 내용입니다.

코드를 해야 할 에는 " " " " 를 고려하십시오.asp:Literal기교로서

그러나 LinkButton의 Click(클릭) 이벤트에서 서버 측 활동을 수행하는 경우가 아니라면 여기서 사용하는 것이 그다지 중요하지 않은 것 같습니다.

당신도 할 수 있습니다.

...LinkButton ID="BtnForgotPassword" runat="server" OnClientClick="ChangeText('1');return false"...

그리고 그것은 링크 버튼 포스트백을 멈춥니다.

그냥 href="#"을 설정합니다.

<asp:LinkButton ID="myLink" runat="server" href="#">Click Me</asp:LinkButton>

하이퍼링크 컨트롤을 사용하여 조사해야 한다고 생각합니다.서버측 컨트롤(코드에서 가시성 등을 조작할 수 있음)이지만 일반 ol' 앵커 태그를 생략하고 포스트백을 발생시키지 않습니다.

지금까지 살펴본 바와 같이 올바른 방법은 다음과 같습니다.

  1. OnClientClick
  2. return false

다음 코드 예제 행과 같이 입력합니다.

<asp:LinkButton ID="lbtnNext" runat="server" OnClientClick="findAllOccurences(); return false;" />

C#에서 다음과 같은 작업을 수행할 수 있습니다.

MyButton.Attributes.Add("onclick", "put your javascript here including... return false;");

속성을 구현하는 대신:

public partial class _Default : System.Web.UI.Page{
 protected void Page_Load(object sender, EventArgs e)
 {
    someID.Attributes.Add("onClick", "return false;");
 }}

사용:

OnClientClick="return false;"

ASP 내부:링크 버튼 태그

페이지 새로 고침을 방지하려면 다음과 같이 하십시오.return false(는) 않다작습니지와 작동하지 않습니다.asp:LinkButton사용하다

href="javascript: void;"

또는

href="#"

OnClientClick="return false;"

<asp:LinkButton ID="linkPrint" runat="server" CausesValidation="False" href="javascript: void;"
        OnClientClick="javascript:self.print();return false;">Print</asp:LinkButton>

위의 코드는 페이지를 새로 고치지 않고 브라우저 인쇄를 호출합니다.

클릭 시 java 스크립트 함수를 호출합니다.

사용해 보셨습니까?OnClientClick?

var myLinkButton = new LinkButton { Text = "Click Here", OnClientClick = "JavaScript: return false;" };

<asp:LinkButton ID="someID" runat="server" Text="clicky" OnClientClick="JavaScript: return false;"></asp:LinkButton>

스크롤 위치를 유지하려면 다음과 같은 작업을 수행할 수 있습니다.

<asp:LinkButton runat="server" id="someId" href="javascript: void;" Text="Click Me" />

빈 아약스 업데이트 패널을 사용하고 링크 버튼의 클릭 이벤트를 연결하는 것은 어떻습니까?이렇게 하면 업데이트 패널만 업데이트되므로 포스트백을 피하고 Javascript를 실행할 수 있습니다.

아무도 이렇게 하지 않는 것 같습니다.

createEventLinkButton.Attributes.Add("onClick", " if (this.innerHTML == 'Please Wait') { return false; } else {  this.innerHTML='Please Wait'; }");

이것이 유일하게 작동하는 방법인 것 같습니다.

jquery ready 기능에서 당신은 아래와 같은 것을 할 수 있습니다.

var hrefcode = $('a[id*=linkbutton]').attr('href').split(':');
var onclickcode = "javascript: if`(Condition()) {" + hrefcode[1] + ";}";
$('a[id*=linkbutton]').attr('href', onclickcode);

클라이언트 측 함수가 false를 반환하도록 할 수도 있습니다.

<asp:LinkButton runat="server" id="button" Text="Click Me" OnClick="myfunction();return false;" AutoPostBack="false" />

다음을 고려할 수도 있습니다.

<span runat="server" id="clickableSpan" onclick="myfunction();" class="clickable">Click Me</span>

저는 클릭 가능한 클래스를 사용하여 포인터, 색상 등을 앵커 태그와 비슷하게 설정하지만, 다시 게시되거나 href="syscript:syscript(0);" trick을 해야 하는 것에 대해 걱정하지 않아도 됩니다.

asplink 대신 html 링크를 사용하고 서버 측 제어를 위해 html 링크 사이에 레이블을 사용할 수 있습니다.

언급URL : https://stackoverflow.com/questions/176827/disable-the-postback-on-an-asplinkbutton

반응형