Я могу создать ImageButton с ASP.NET это не обратная?
Я пытаюсь использовать элемент управления ImageButton только для выполнения сценария на стороне клиента. Я могу указать сценарий на стороне клиента для выполнения с помощью свойства OnClientClick, но как остановить его от попытки опубликовать каждый раз, когда пользователь нажимает на него? Нет причин публиковать сообщения при нажатии на эту кнопку. Я установил CausesValidation в False, но это не останавливает его от публикации.
8 ответов
вот один из способов, которым вы могли бы сделать это, не конфликтуя с обратной функцией других элементов управления:
определите свою кнопку примерно так:
<asp:Button runat="server" Text="Button" UseSubmitBehavior="false" OnClientClick="alert('my client script here');my" />
" мой "конец в обработчике для OnClientClick-это способ псевдонима asp.net' s __doPostBack client событие, которое заставляет обратную передачу; мы просто переопределяем поведение, не делая ничего похожего на этот скрипт:
<script type="text/javascript">
function my__doPostBack(eventTarget, eventArgument) {
//Just swallow the click without postback of the form
}
</script>
Edit: Да, я чувствую, что мне нужно принять душ после некоторых грязных трюки, которые мне нужно провернуть, чтобы получить asp.net делать то, что я хочу.
Я знаю, что эта проблема уже решена, но простое решение-вернуть false из метода HTML onclick (т. е. метода ASPX OnClientClick), например
<asp:ImageButton ID="ImageNewLink" runat="server"
ImageUrl="~/images/Link.gif" OnClientClick="DoYourStuff(); return false;" />
возврат false останавливает браузер от выполнения запроса обратно на сервер i.s. останавливает обратную передачу .NET.
другим решением было бы определить PostBackUrl, который ничего не делает
<asp:imagebutton runat="server" PostBackUrl="javascript:void(0);" .../>
используйте управление изображениями на стороне сервера
<asp:Image runat="server" .../>
уверен, что вы можете добавить клиент onclick
мероприятия к этому.
Решение 1
<asp:ImageButton ID="btn" runat="server" ImageUrl="~/images/yourimage.jpg"
OnClientClick="return false;" />
или Решение 2
<asp:ImageButton ID="btn" runat="server" ImageUrl="~/images/yourimage.jpg"
OnClientClick="yourmethod(); return false;" />
кроме того (решение 2), Ваш метод javascript может быть в этой форме
<script type="text/javascript">
function yourmethod() {
__doPostBack (__EVENTTARGET,__EVENTARGUMENT); //for example __doPostBack ('idValue',3);
}
</script>
в коде
protected void Page_Load(object sender, System.EventArgs e)
{
if (this.IsPostBack) {
string eventTarget = this.Request("__EVENTTARGET") == null ? string.Empty : this.Request("__EVENTTARGET");
string eventArgument = this.Request("__EVENTARGUMENT") == null ? string.Empty : this.Request("__EVENTARGUMENT");
}
}
Это отлично работает для меня:
использовать OnClientClick
написать свой скрипт и PostBackUrl="javascript:void(0);"
чтобы избежать обратной передачи.
<div class="close_but">
<asp:ImageButton ID="imgbtnEChartZoomClose" runat="server" ImageUrl="images/close.png" OnClientClick="javascript:zoomclosepopup();" PostBackUrl="javascript:void(0);" />
</div>
используйте OnClientClick, чтобы написать свой скрипт и PostBackUrl= " javascript: void (0);", чтобы избежать обратной передачи