Как позволить Html Link (якорь) делать постбэк, чтобы он был похож на LinkButton? - PullRequest
10 голосов
/ 19 марта 2010

Я хотел бы спросить, как я могу создать html-якорь (элемент) или даже любой объект для обратной передачи или выполнения метода на стороне сервера?Я хочу создать пользовательскую кнопку (обернутую с несколькими элементами div, чтобы сделать некоторые из них), и я хочу реализовать OnClick, чтобы она выглядела как ASP.NET LinkButton?

Как

<a href="#" onclick="RunServerSideMethod()">Just a simple link button</a>

Ответы [ 6 ]

14 голосов
/ 19 марта 2010

Используйте серверный элемент управления html, HtmlAnchor, который является тегом на стороне сервера.

<asp:HtmlAnchor runat="server" onclick="RunServerSideMethod">Just a simple link</asp:HtmlAnchor>
9 голосов
/ 19 марта 2010

По умолчанию элементы управления используют __doPostBack для обратной передачи на сервер. __doPostBack принимает уникальный идентификатор элемента управления (или в HTML - свойство name элемента HTML). Второй параметр - это имя команды для запуска.

Так что для пользовательской кнопки, рендеринг в выходной поток:

<a id="someclientid" name="someuniqueid" href="javascript:void(0);" onclick="__doPostBack('someuniqueid', '');">val</a>

В пользовательскую кнопку добавьте IPostBackEventHandler, и этот оператор __doPostBack автоматически запустит для вас метод RaisePostBackEvent.

5 голосов
/ 03 мая 2013

Просто добавьте метку привязки -> runat = "server" onServerClick = "Имя вашей функции", это решит вашу проблему.

1 голос
/ 23 сентября 2011
One workaround could be :

invoke dummyButton click in client side event of anchor tag - which will call server side event of this dummy Button by default. so if u place ur server side code in this dummyButton server event - calling anchor tag client side event would invoke this server side dummy button event.

Code:

<a id="ancLink" href="javascript:void(0);" >back</a>

<asp:Button ID="dummyRefresh" runat="server" OnClick="BtnRefreshOnclick" style="display:none"/>

Javascript:

ancLink.live("click", function () {
         callDummyButtonServerEvent();
    });

function callDummyButtonServerEvent() {

    $('input[id$=dummyRefresh]').click();   

}

Hope this helps.

Vardhini 
0 голосов
/ 12 июля 2013

Вы также можете использовать ASP-код из фактического HTML-кода следующим образом.

<a id="someclientid" name="someuniqueid" href="javascript:void(0);" onclick="<% YourASPMethod(); %>">val</a>

Это приведет к выполнению метода под названием YourASPMethod () в файле aspx.cs.

0 голосов
/ 19 марта 2010

Чтобы сделать это без использования ASP.NET, RunServerSideMethod () должна быть функцией javascript, которая использует Ajax для отправки запроса на сервер.

Попробуйте этот учебник по Ajax: http://www.w3schools.com/ajax/

...