0

我有一个 javascript 方法和一个 c# 方法,现在单击一个按钮,我想同时调用它们。

首先,我想调用名为 as 的 c# 方法,'Find_Direction'因为它可以输入 onclick,然后我将在名为 as 的 javascript 方法之后调用calcRoute

我正在尝试这个,但没有任何运气:

<asp:Button id="Button1" UseSubmitBehavior="False" value="GetDirections" onclick="calcRoute" OnClientClick="Find_Direction" runat="server"/>

弹出以下错误:

Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.

Compiler Error Message: CS1061: 'ASP.findroute_aspx' does not contain a definition for 'calcRoute' and no extension method 'calcRoute' accepting a first argument of type 'ASP.findroute_aspx' could be found (are you missing a using directive or an assembly reference?)
4

2 回答 2

3

您在 onClick 事件中指定 javascript 函数名称。所以把C#函数名放在这里

C#代码:

 protected void  Find_Direction (object sender, EventArgs e)
 {
   // do your work

   // Register your javascript function

    Page.ClientScript.RegisterStartupScript(this.GetType(), "script", "  <script>calcRoute();</script>");
 }

你的标记:

<asp:Button id="Button1" value="GetDirections" onclick="Find_Direction" runat="server"/>

案例 2:在服务器端函数之前调用 javascript 函数

Javascript函数

 function calcRoute() {

        alert('test')
        return true;
    }

你的标记

 <asp:Button id="Button1" value="GetDirections" onclick="Find_Direction " OnClientClick="return Find_Direction()" runat="server"/>

通过这种方式,您可以调用 javascript 函数,然后调用服务器端,但请确保您从 javascript 函数返回 true 以调用服务器端函数。

我希望,现在你可以解决你的问题。:)

于 2013-03-03T09:02:59.443 回答
2

您需要在代码隐藏(aspx.cs 或 aspx.vb 文件)中有一个名为calcRoute.

如果您希望 JS 先执行,您应该能够按照您的方式进行操作,OnClientClick 指向 JS 函数, OnClick 指向 C#/VB 方法(事件处理程序)。

如果您想确保在您的 C# 代码之后调用 JS,您应该处理后端的点击,然后通过注册启动脚本将 JS 发送回浏览器。除非您使用更新面板,否则这将导致完整的回发。在您的事件处理程序中,您可以注册一个启动脚本Page.RegisterStartupScript以将 javascript 命令发送回浏览器。在这种情况下,您根本不想使用 OnClientClick。

于 2013-03-03T09:03:40.363 回答