나는 코드를 사용해 보았지만 정상적으로 작동했습니다.
그냥 당신이 버튼 OnClientClick은 = 추가하여 다시 게시를 생성하지 않는 것 확인 "false를 반환;"
<asp:Button ID="cmd" runat="server" Text="Button" OnClientClick="return false;"></asp:Button>
은 또한 브라우저의 "소스보기"의 차이를 볼 수 없습니다. 그러나 DOM에서 변경되었습니다. 직접 확인하기 위해 CONSOLE.LOG을 불을 지르고를 사용하여 추가
편집 :
이
$("#<%=cmd.ClientID %>").click(function() {
$(this).attr("CommandName", "do").attr("CommandArgument", "arg2");
console.log(this);
});
가 CONSOLE.LOG (이) 다음 나에게 준 를 당신이 그것에 대해 생각합니다. 버튼이 포스트 백을 생성하면 페이지가 다시로드되면 버튼이 정상으로 재설정됩니다.
편집 # 2 :
는 내가 서버 측에서 필요 클라이언트 측면에서의 변화가 필요하지 않습니다. 그게 바로 질문의 요점이었습니다. 에서 서버 측의 변경 사항을 확인해야하며 가능하면 이 아닌 것으로 보입니다. - 에피카
오케이 ... 그런 경우. 그것은 불가능합니다. "CommandArgument"및 "CommandName"은 클라이언트에 아무런 의미가 없으며 액세스 할 수 없습니다.
그러나 해결 방법이 있습니다. 그러나 응용 프로그램의 컨텍스트에 따라 유용하지 않을 수도 있습니다.
here과 같은 사용자 지정 속성을 사용해 볼 수 있습니다.
또는 클라이언트 측에서 __doPostBack을 실행하고 코드 뒤에서 __EVENTARGUMENT를 선택할 수 있습니다.
(링크 버튼은 asp.net에 의해 __doPostBack 함수를 생성합니다.이러한처럼)
는 :
<asp:Button ID="cmd" runat="server" Text="Button"
OnClientClick="DoPostBack(); return true;"
onclick="cmd_Click" ></asp:Button>
<asp:LinkButton ID="LinkButton1" runat="server" Visible="false">LinkButton</asp:LinkButton>
코드 뒤에 : 페이지
<script type="text/javascript" language="javascript">
function DoPostBack() {
__doPostBack('cmd', 'thesearemyarguments');
}
</script>
protected void cmd_Click(object sender, EventArgs e)
{
Response.Write(Request.Params["__EVENTARGUMENT"]);
}
시도해보고이를 수행하는 데 사용하는 코드의 예를 보여줄 수 있습니까? =) – Rob
@Rob : 코드 예제를 업데이트했습니다. – epitka
은 .NET 4.0을 사용하고 있습니까? 버전이 아니라면? – capdragon