我想问我如何制作一个 html 锚(一个元素)甚至任何对象来执行回发或执行服务器端方法?我想创建一个自定义按钮(用一些 div 包装来做一些自定义)并且我想实现 OnClick 看起来像 ASP.NET LinkButton?
像
<a href="#" onclick="RunServerSideMethod()">Just a simple link button</a>
我想问我如何制作一个 html 锚(一个元素)甚至任何对象来执行回发或执行服务器端方法?我想创建一个自定义按钮(用一些 div 包装来做一些自定义)并且我想实现 OnClick 看起来像 ASP.NET LinkButton?
像
<a href="#" onclick="RunServerSideMethod()">Just a simple link button</a>
使用服务器端 html 控件,HtmlAnchor
它是服务器端的一个标签。
<asp:HtmlAnchor runat="server" onclick="RunServerSideMethod">Just a simple link</asp:HtmlAnchor>
默认情况下,控件使用 __doPostBack 回发到服务器。__doPostBack 获取控件的 UniqueID(或在 HTML 中,HTML 元素的 name 属性)。第二个参数是要触发的命令的名称。
因此,对于自定义按钮,渲染到输出流:
<a id="someclientid" name="someuniqueid" href="javascript:void(0);" onclick="__doPostBack('someuniqueid', '');">val</a>
在您的自定义按钮中,添加IPostBackEventHandler
,此__doPostBack
语句将RaisePostBackEvent
自动为您触发其方法。
只需添加锚标记 --> runat="server" onServerClick="Your function name",它就可以解决您的问题。
一种解决方法可能是:
在锚标记的客户端事件中调用 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();
}
要在不依赖 ASP.NET 的情况下执行此操作,RunServerSideMethod() 应该是一个使用 Ajax 向服务器发送请求的 javascript 函数。
试试这个 Ajax 教程:http ://www.w3schools.com/ajax/
您还可以在实际 HTML 代码中使用 ASP 代码,如下所示。
<a id="someclientid" name="someuniqueid" href="javascript:void(0);" onclick="<% YourASPMethod(); %>">val</a>
这将在 aspx.cs 文件中执行一个名为 YourASPMethod() 的方法。