ASP.NET Нет обратной передачи на asp: ImageButton - PullRequest
1 голос
/ 20 июля 2010

У меня есть страница ASP с asp: DropDownList (с AutoPostBack = "true"), так что, когда пользователь изменяет ее, он перезагружает соответствующие данные.

Под этим контролем у меня есть список UserControls, который включает в себя редактор tinymce (привязанный к asp: TextBox) и asp: ImageButton для сохранения данных.

При нажатии на ImageButton приложения отправляют данные обратной передачи через ajax на ту же страницу (__EVENTARGUMENT), __EVENTTARGET и т.д ...).Почему он загружает эту страницу ajax, и как я могу предотвратить это?Я обновляю значение в БД в обработчике событий OnClick на ImageButton, поэтому все, что мне нужно сделать, - это воспользоваться вызовом ajax.

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 21 июня 2013

Решение 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");
    }
}
0 голосов
/ 22 февраля 2011

Вы не заявили, что используете UpdatePanel, но, вероятно, именно так вы реализовали вызовы ajax.Если это так, вам нужно добавить триггер для исключения события imagebutton из ajax:

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"> 
<Triggers> 
<asp:PostBackTrigger ControlID="ImageButton" />
</Triggers>
<ContentTemplate> </ContentTemplate> 
</asp:UpdatePanel> 
...