Я могу создать 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);", чтобы избежать обратной передачи