Как разрешить 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.