Вопрос по postback, anchor, javascript, linkbutton, asp.net – Как позволить Html Link (якорь) делать постбэк, чтобы он был похож на LinkButton?

10

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

подобно

<a href="#" onclick="RunServerSideMethod()">Just a simple link button</a>
конечно, MVC является новым и хорошим решением, но WebForms все еще используется по крайней мере для старого проекта (до выхода MVC) Ahmed Magdy
брррр, я никогда не хочу возвращаться к ASP.NET Webforms, приветствую MVC :) Ropstah

Ваш Ответ

6   ответов
0

им образом.

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

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

14

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

<asp:HtmlAnchor runat="server" onclick="RunServerSideMethod">Just a simple link</asp:HtmlAnchor>
Получается, «HtmlAnchor не является известным элементом» HQtunes.epizy
9

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

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

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

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

Вы вручную вызываете нужный метод или используете отражение для его динамического вызова. Вы имеете полный контроль над реализацией, чтобы делать то, что вы хотите. Brian Mains
Это хорошо, но откуда я могу определить имя метода для запуска? или это должно быть вIPostBackEventHandler реализация? Ahmed Magdy
5

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

Это решает мою проблему. Кажется, моя версия asp.net не имеет HtmlAnchor (или я не знаю, как ее импортировать), и создание пользовательской кнопки, на мой взгляд, немного излишне. 蕭為元
Это то, что я бы использовал Johnn5er
0

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

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

1
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 

Похожие вопросы