从javascript函数调用C#方法

时间:2014-06-03 09:34:06

标签: c# javascript

我需要从javascript调用c#方法。我需要在单击javascript按钮时调用该方法,即(btnclick())。但是在点击按钮之前会执行Login方法。

aspx文件

    <script type="text/javascript">
    function  btnclick()
    {
    <%=Login() %>;     //calling the c# method
    };
    $(document).ready(function ()
    {

        $(".username").focus(function () {
            $(".user-icon").css("left", "-48px");
        });
    </script>
    <body>
    //contains other elements like username and password text boxes
    <input type="submit" id="submit" name="submit" value="Login" class="button" onclick="btnclick()"/>
    </body>

aspx.cs文件

必须从javascript调用以下c#方法

 protected void Login()
{
//contains method for authentication
}

还有其他方法可以从javascript中调用c#方法。

4 个答案:

答案 0 :(得分:1)

您的问题暴露了您对网站运作方式缺乏了解。你根本无法执行C#函数形式的javascript代码,如:

function  btnclick()
{
<%=Login() %>;     //calling the c# method
};

因为javascript正在浏览器中运行,而C#正在服务器上运行。 调用C#登录方法的原因是您的按钮配置为提交表单和我认为指向您服务器的表单。

答案 1 :(得分:0)

您是否尝试过添加api控制器并将方法放入其中?我真的很喜欢使用ProxyApi(就像添加NuGet一样简单),它会为你生成干净的JavaScript代理。你可以在几分钟内完成并运行:

  • 添加ApiController并添加Login方法。
  • 通过NuGet添加ProxyApi并在javascript中引用它:[script src =“〜/ api / proxies”] [/ script]
  • 在javascript中调用您的C#方法:

    $ .proxyies.myapi.login(some params).done(function(data){     //完成了! });

请参阅:https://github.com/stevegreatrex/ProxyApi

答案 2 :(得分:-1)

您可以将c#方法定义为webmethod。

试一试:

[WebMethod]
protected void Login()
{
   //contains method for authentication
}

感谢。

答案 3 :(得分:-1)

<script language="javascript" type="text/javascript">
function jsFunction()
{
    document.getElementById('<%=lbSubmit.ClientID%>').click();
}
</script>





<asp:LinkButton  ID="lbSubmit" runat="server" Text="Update Files" 
onclick="cshapbottun_Click" ></asp:LinkButton>



C# code
protected void cshapbottun_Click(object sender, EventArgs e)
{
//    DoSomething;
}