a标签和OnClientClick区别的疑问,请大神解答

nsq3292353 2016-04-28 04:28:33
<asp:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButton1_Click"   OnClientClick="setWell('<%#Eval('well_id')%>','<%#Eval('well_name')%>')">编辑</asp:LinkButton>



<a id="A1"  onclick="setWell('<%#Eval("well_id")%>','<%#Eval("well_name")%>')">编辑2</a>


这样写的话两者都触发OnClientClick属性,但是LinkButton 不会把值传进去,a标签则会,当
OnClientClick="setWell('<%#Eval('well_id')%>','<%#Eval('well_name')%>')"
改成
onclick="setWell('<%#Eval("well_id")%>','<%#Eval("well_name")%>')">
这样时,LinkButton 则会报错错误 130 The server tag is not well formed. E:\C# Test\Test\Bb4.aspx 228


说的有些啰嗦,希望大神解答,还有就是我想实现先调用js方法再调用后台方法,如果不用这样,怎么解决?


小弟不才,希望高手解答。
...全文
200 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
正怒月神 版主 2016-05-04
  • 打赏
  • 举报
回复
如果只是要完成你的需求,其实很简单。
<asp:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButton1_Click" >编辑</asp:LinkButton>

$('#<%LinkButton1.ClientID%>').click(function(){
//处理逻辑,先触发 js,如果false,则通过return false,不会触发OnClick的后台事件
     if(false)
      return false;
})
onclick的后台事件,还是老样子不需要改动。上面用的jquery
正怒月神 版主 2016-05-04
  • 打赏
  • 举报
回复
if(!false) return false; 上面少了个感叹号。。哈哈,测试代码,表达一下意思而已
Lee_Y_K 2016-05-03
  • 打赏
  • 举报
回复
引用 4 楼 nsq3292353 的回复:
[quote=引用 2 楼 nsq3292353 的回复:] [quote=引用 1 楼 u012758945 的回复:] 你先了解,带有runat="server"的空间不能带 <%%>这种代码块。 既然有runat=server,你可以把数据保存到控件的可见属性上,让前端获取。
您所说的不能是语法上的不能还是是说是不好的书写习惯呢,如果是第一种的话,好像是可以的,然后我是把数据绑在Repeater 上的。 然后我想做的就是想用onclick 和OnClientClick,先触发js方法然后再调用后台的方法,这样怎么做啊。 谢谢。。。[/quote] 谢谢,这点我知道的,我想知道的是但是加了runat="server",OnClientClick="setWell('<%#Eval("well_id")%>','<%#Eval("well_name")%>')"这样写是会报错的。我不明白这是为什么。[/quote] 你先区分<%%>代码块的类型 常用的<%=变量%>是绑定对象的值,不能用在服务器控件上。 <%#Eval%>这种是用于服务器控件动态绑定数据,需要把数据源绑定到控件上。 单纯的<% 代码 %>是编写逻辑代码。
nsq3292353 2016-04-29
  • 打赏
  • 举报
回复
引用 2 楼 nsq3292353 的回复:
[quote=引用 1 楼 u012758945 的回复:] 你先了解,带有runat="server"的空间不能带 <%%>这种代码块。 既然有runat=server,你可以把数据保存到控件的可见属性上,让前端获取。
您所说的不能是语法上的不能还是是说是不好的书写习惯呢,如果是第一种的话,好像是可以的,然后我是把数据绑在Repeater 上的。 然后我想做的就是想用onclick 和OnClientClick,先触发js方法然后再调用后台的方法,这样怎么做啊。 谢谢。。。[/quote] 谢谢,这点我知道的,我想知道的是但是加了runat="server",OnClientClick="setWell('<%#Eval("well_id")%>','<%#Eval("well_name")%>')"这样写是会报错的。我不明白这是为什么。
Poopaye 2016-04-28
  • 打赏
  • 举报
回复
如果控件有runat="server" onclick会把执行的结果传给服务器 onclientclick只会在浏览器执行
nsq3292353 2016-04-28
  • 打赏
  • 举报
回复
引用 1 楼 u012758945 的回复:
你先了解,带有runat="server"的空间不能带 <%%>这种代码块。 既然有runat=server,你可以把数据保存到控件的可见属性上,让前端获取。
您所说的不能是语法上的不能还是是说是不好的书写习惯呢,如果是第一种的话,好像是可以的,然后我是把数据绑在Repeater 上的。 然后我想做的就是想用onclick 和OnClientClick,先触发js方法然后再调用后台的方法,这样怎么做啊。 谢谢。。。
Lee_Y_K 2016-04-28
  • 打赏
  • 举报
回复
你先了解,带有runat="server"的空间不能带 <%%>这种代码块。 既然有runat=server,你可以把数据保存到控件的可见属性上,让前端获取。

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧