Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何让Html链接(锚定)像LinkButton一样回发?_Asp.net_Javascript_Postback_Anchor_Linkbutton - Fatal编程技术网

Asp.net 如何让Html链接(锚定)像LinkButton一样回发?

Asp.net 如何让Html链接(锚定)像LinkButton一样回发?,asp.net,javascript,postback,anchor,linkbutton,Asp.net,Javascript,Postback,Anchor,Linkbutton,我想问一下,如何制作一个html锚(一个元素)或任何对象来执行回发或执行服务器端方法? 我想创建一个自定义按钮(一个用一些div包装的按钮,用于自定义按钮),我想实现OnClick,使其看起来像ASP.NET LinkButton 像 使用服务器端html控件,它是服务器端a标记 <asp:HtmlAnchor runat="server" onclick="RunServerSideMethod">Just a simple link</asp:HtmlAnchor>

我想问一下,如何制作一个html锚(一个元素)或任何对象来执行回发或执行服务器端方法? 我想创建一个自定义按钮(一个用一些div包装的按钮,用于自定义按钮),我想实现OnClick,使其看起来像ASP.NET LinkButton


使用服务器端html控件,它是服务器端a标记

<asp:HtmlAnchor runat="server" onclick="RunServerSideMethod">Just a simple link</asp:HtmlAnchor>
只是一个简单的链接

要做到这一点而不依赖ASP.NET,RunServerSideMethod()应该是一个javascript函数,它使用Ajax向服务器发送请求


尝试此Ajax教程:

默认情况下,控件使用uu doPostBack向服务器进行回发__doPostBack获取控件的唯一ID(或者在HTML中为HTML元素的name属性)。第二个参数是要激发的命令的名称

因此,对于自定义按钮,渲染到输出流:

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


在自定义按钮中,添加
IPostBackEventHandler
,这个
\uuu doPostBack
语句将为您自动启动它的
RaisePostBackEvent
方法。

一个解决方法可能是:
调用dummyButton在锚定标记的客户端事件中单击-默认情况下将调用此虚拟按钮的服务器端事件。所以,如果您将服务器端代码放在这个dummyButton服务器事件中,那么调用锚定标记客户端事件将调用这个服务器端虚拟按钮事件

代码:


只需添加锚定标记-->runat=“server”onserver click=“您的函数名”,即可解决您的问题。

您还可以在实际HTML代码中使用ASP代码,如下所示

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


这将在aspx.cs文件中执行一个名为YourASPMethod()的方法。

brrrr,我再也不想回到ASP.NET Webforms,向MVC致敬:)当然MVC是一个新的好解决方案,但Webforms至少在旧项目(MVC发布之前)中仍然使用,这很好,但我可以从哪里定义要运行的方法的名称?或者这应该在
IPostBackEventHandler
实现中?手动调用想要的方法,或者使用反射动态调用它。你可以完全控制实现来做你想做的事情,这就得到了,“HtmlAnchor不是一个已知的元素”这就是我要用的,这一个解决了我的问题。我的asp.net版本似乎没有HtmlAnchor(或者我不知道如何导入它)&在我看来,定制按钮有点过分了。
<a id="ancLink" href="javascript:void(0);" >back</a>

<asp:Button ID="dummyRefresh" runat="server" OnClick="BtnRefreshOnclick" style="display:none"/>
ancLink.live("click", function () {
         callDummyButtonServerEvent();
    });

function callDummyButtonServerEvent() {

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

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