【问题标题】:HTML server control vs ASP.net webHTML 服务器控件与 ASP.net Web
【发布时间】:2014-03-17 17:19:37
【问题描述】:

我试图在单击按钮(服务器控件)时调用 javascript 函数。当我为上述目的使用 html 按钮控件(带有runat="server" 属性)时,我能够做到, 但是当我使用 ASP.net 按钮控件(web 控件)时,它给了我 错误:BC30456:“myFunction”不是“ASP.webform1_aspx”的成员。

有什么区别?

对于案例 1 我的代码使用 html 按钮控件,案例 2 是我使用 ASP.net Web 控件的代码:

案例 1:

<html>
     <head>
     <script >
     function myFunction()
     {
     alert("Hello World!");
     }
     </script>
     </head>

     <body>
     <button runat="server" onclick="myFunction()">Try it</button>
     </body>
     </html>

**案例2:**

<html>
     <head>
     <script >
     function myFunction()
     {
     alert("Hello World!");
     }
     </script>
     </head>

     <body>

    <asp:Button id="Button"  onclick="myFunction()" runat="server" Text="Button" />
     </body>
     </html>

【问题讨论】:

  • 您的 asp:button 丢失 "
  • @Zaki,这是一个错字,我实际使用过:

标签: javascript html asp.net


【解决方案1】:

当您编写 runat="server" 时,它会成为服务器控件,并且要使用服务器端控件调用 JS 函数,您必须使用 OnClientClick 而不是 OnClick 方法。 如果你使用 Onclick 方法,它会尝试在服务器上查找函数。

希望这会有所帮助。

【讨论】:

  • 感谢 Umar,这很有帮助。知道为什么它适用于案例 1 吗?我们还有一个带有 Onclick 的服务器控件..
  • 嘿,在第 1 种情况下,您正在创建一个 html 控件。浏览器首先识别它并尝试查找 js 函数,但是当您明确提到它是一个网络服务器控件时,它会以这种方式呈现控件。要了解更多关于它的信息,您必须在浏览器中为这两种情况寻找渲染源。 (右键单击浏览器查看源代码:))您会看到不同之处。如果有帮助,请将其标记为正确
【解决方案2】:

使用 onClientClick 进行 asp 控制

实际上 onClick 在你的 aspx.cs 文件中搜索一个方法,即一个 C# 或 VB 函数

http://forums.asp.net/t/1249580.aspx?onclick+versus+onclientclick

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.button.onclientclick(v=vs.110).aspx

【讨论】:

  • 所以你的意思是它适用于 html 服务器控件但对于 asp.net web 控件它在我的 .vb 文件中搜索方法?
  • 是的,确切地说,当您的 asp 控件呈现为 html 控件时,它就是这样做的,它会附加您的 vb 代码的功能或您的后端是什么,如果您需要调用 js 函数使用 onclientclick
猜你喜欢
  • 2011-05-22
  • 1970-01-01
  • 2010-09-19
  • 2013-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-24
  • 2012-07-12
相关资源
最近更新 更多