我需要从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#方法。
答案 0 :(得分:1)
您的问题暴露了您对网站运作方式缺乏了解。你根本无法执行C#函数形式的javascript代码,如:
function btnclick()
{
<%=Login() %>; //calling the c# method
};
因为javascript正在浏览器中运行,而C#正在服务器上运行。 调用C#登录方法的原因是您的按钮配置为提交表单和我认为指向您服务器的表单。
答案 1 :(得分:0)
您是否尝试过添加api控制器并将方法放入其中?我真的很喜欢使用ProxyApi(就像添加NuGet一样简单),它会为你生成干净的JavaScript代理。你可以在几分钟内完成并运行:
在javascript中调用您的C#方法:
$ .proxyies.myapi.login(some params).done(function(data){ //完成了! });
答案 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;
}