从Javascript调用C#方法的最简单方法是什么?

Jam*_*ell 2 javascript c# asp.net dotnetnuke

我有一个LinkBut​​ton控件,我需要添加ac#方法.目前,当我使用解析控件并将控件添加到页面时,它会更改对javascript的调用,并且我得到了未定义.我想办法解决这个问题,就是定义一个javascript函数,从后面的代码中调用c#方法,但我无法弄清楚如何做到这一点.

特别是当点击链接按钮时,我需要javascript将链接按钮的ID传递给C#方法.

我试过这个:

foreach (Control Control in myctrl.Controls)
           {
              if (Control is LinkButton)
                   {
                      LinkButton lb = (LinkButton)Control;
                      lb.Click += LinkButton_Click;

                    }
              Panel1.Controls.Add(myctrl);
           } 



public void LinkButton_Click(Object sender, EventArgs e)
        {
   BREAKPOINTHERE>         Console.Write(e.ToString());

        }
Run Code Online (Sandbox Code Playgroud)

点击时它永远不会触发.这是生成的代码:

<a id="dnn_ctr954_ViewPromotions_LinkButton2" href="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;dnn$ctr954$ViewPromotions$LinkButton2&quot;, &quot;&quot;, true, &quot;&quot;, &quot;&quot;, false, true))">Get your Free 2</a>
Run Code Online (Sandbox Code Playgroud)

现在,如果我把它放在我的aspx页面,它工作正常:

 <asp:LinkButton ID="test" OnClick="LinkButton_Click" runat="server">mybutton</asp:LinkButton>
Run Code Online (Sandbox Code Playgroud)

我明白了,它运行正常:

<a id="dnn_ctr954_ViewPromotions_test" href="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;dnn$ctr954$ViewPromotions$test&quot;, &quot;&quot;, true, &quot;&quot;, &quot;&quot;, false, true))">mybutton</a>
Run Code Online (Sandbox Code Playgroud)

wom*_*omp 7

你不能这样做.Javascript存在于客户端上.服务器上存在C#代码.他们不可能彼此有任何背景知识.服务器代码运行以响应HTTP请求.

话虽这么说,您可以在C#中创建一个Web服务方法,并使用javascript调用它.从你的问题的背景来看,它可能不会做你想要的.Web服务方法是静态的,并且与常规回发没有相同的上下文.

但是,您可以查看一些类似这样的文章: 使用Ajax扩展的客户端Web服务调用

编辑: 通过编辑,听起来你只想让你的按钮回发到服务器.这是ASP.Net的核心功能,很容易做到.正如其他答案所示,您只需要在服务器代码中连接一个click事件处理程序.