<ASP:LinkButton>에서 포스트백 비활성화
-
05-07-2019 - |
문제
내 양식에 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>
이 경우 onclick 기능이 유효성 검사기가 됩니다.false인 경우 "href" 링크가 실행되지 않습니다.그러나 이것이 사실이라면 href가 실행될 것입니다.이렇게 하면 게시물이 삭제됩니다.
다른 팁
이것은 도움이되지 않는 대답처럼 들릴지 모르지만 ... 왜 순수한 고객 측에 링크 버튼을 사용하고 있습니까? 표준 HTML 앵커 태그를 사용하고 설정하십시오 onclick
JavaScript에 대한 조치.
해당 링크의 텍스트를 생성하기 위해 서버가 필요한 경우 asp:Label
앵커의 시작과 엔드 태그 사이의 내용으로.
서버 측 코드를 기반으로 스크립트 동작을 동적으로 변경 해야하는 경우 고려하십시오. asp:Literal
기술로.
그러나 LinkButton의 클릭 이벤트에서 서버 측 활동을하지 않으면 여기에 사용하는 것이 그리 많지 않은 것 같습니다.
당신도 할 수 있습니다
...LinkButton ID="BtnForgotPassword" runat="server" OnClientClick="ChangeText('1');거짓 반환 "...
그리고 링크 버튼 포스트 백을 중지합니다
href = "#"을 설정했습니다.
<asp:LinkButton ID="myLink" runat="server" href="#">Click Me</asp:LinkButton>
하이퍼 링크 컨트롤을 사용하여 조사해야한다고 생각합니다. 서버 측 컨트롤 (따라서 코드에서 가시성 등을 조작 할 수 있음)이지만 일반 OL '앵커 태그를 생략하고 포스트백을 유발하지 않습니다.
C#에서는 다음과 같은 작업을 수행합니다.
MyButton.Attributes.Add("onclick", "put your javascript here including... return false;");
몇 분 전에 이것을 겪었습니다. 올바른 방법은 사용입니다.
OnClientClick
Return False()
코드의 다음 예 줄 :
<asp:LinkButton ID="lbtnNext" runat="server" OnClientClick="findAllOccurences(); return false();" Visible="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 내부 : LinkButton 태그
OnClick 이벤트에서 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" />
클라이언트 측 기능이 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 = "JavaScript : void를 수행 해야하는 것에 대해 걱정할 필요가 없습니다. (0); " 장난.
빈 ajax 업데이트 패널을 사용하고 LinkButton의 클릭 이벤트를 사용하지 않겠습니까? 이 방법으로 만 업데이트 패널 만 업데이트되므로 포스트 백을 피하고 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);
페이지의 새로 고침을 피하기 위해 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>
위의 코드는 페이지를 새로 고치지 않고 브라우저 인쇄를 호출합니다.
ASP 링크 대신 HTML 링크를 사용하면 서버 측 제어를 위해 HTML 링크 사이에서 레이블을 사용할 수 있습니다.