Как разрешить Html Link (anchor) сделать postback, чтобы быть похожим на LinkButton?

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

Как

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

Ответ 1

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

Поэтому для пользовательской кнопки выполните рендеринг в выходной поток:

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

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

Ответ 2

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

<asp:HtmlAnchor runat="server" onclick="RunServerSideMethod">Just a simple link</asp:HtmlAnchor>

Ответ 3

Просто добавьте тег привязки → runat = "server" onServerClick = "Ваше имя функции", оно решает вашу проблему.

Ответ 4

Одним из обходных путей может быть:
вызвать dummyButton click в клиентском событии тега привязки - который по умолчанию будет вызывать серверное событие этой фиктивной кнопки. поэтому, если вы поместите свой код на стороне сервера в это событие сервера dummyButton - вызов события привязки тега на стороне клиента вызовет событие фиктивной кнопки на стороне сервера.

Код:

<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();   

}

Надеюсь, это поможет.

Ответ 5

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

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

Ответ 6

Вы также можете использовать код ASP из фактического кода HTML, как показано ниже.

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

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