Jump to content
HideCode

Chamar função c# em Javascript

Recommended Posts

HideCode

Bom dia pessoal, como o titulo indica queria chamar um método que tenho na classe nome.cs em c#, na classe nome mas desta em javascript. já andei a ver e fui tentando mas sem sucesso é possível alguém me mostrar apenas um exemplo desta duvida. Isto é o código que se deve de meter nas duas páginas. a função é chamada onclick.

Obrigado

Já agora fica um exemplo que tentei fazer e que n me está a dar.

Classe html

function mostrar(msg) {
		 $.post("Nome.cs/PegaData")
		 alert(msg.d);
 };

Classe Nome.cs

[WebMethod]
    public static string PegaData()
    {
	    return DateTime.Now.ToString();
    }

Não deu certo

Obrigado :s

Share this post


Link to post
Share on other sites
HideCode

Já estou mais perto mas ao que parece não me está a executar a função de c#, vou mostrar até agora o que tenho.

private static int numero = 12;
[WebMethod]
    private static int Age(int numero)
    {
        return idade;
    }

e em javascript

<script type="text/javascript">
        function Idade() {
            $.post("Idades.cs/Age(idade)")
      
var check = idade;

            if (check >1)
            {
                $('#Formulario').show();
            }
        else
            {
                $('#Formulario).hide();
            }
        };

O que poderá estar mal?

Obrigado pelas dicas

Edited by brunoais
geshi

Share this post


Link to post
Share on other sites
nelsonr

[WebMethod]
public static int Idade()
{
return(new Random().Next(100));
}


<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
	<title></title>
	<script type="text/javascript">
		function Idade()
		{
			PageMethods.Idade(onSucess, onerror);

			function onSucess(result)
			{
				alert(result);
			}

			function onerror(result)
			{
				alert('Something wrong.');
			}
		}
	</script>
</head>
<body>
	<form id="form1" runat="server">
	<div>
		<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true"></asp:ScriptManager>
		<a onclick="Idade(); return(false);" href="#">idade ?</a>
	</div>
	</form>
</body>
</html>

Share this post


Link to post
Share on other sites
HideCode

Antes de mais muito obrigado pela ajuda que me estás a facultar.

Mas o que quero retornar no codigo C# tem que ser a variável que tenho definida, pois esta é um acesso á base de dados.

E quero que faça aquele if. E com o código que me facultas-te não é possível fazer isso.E não tenho que dar indicação qual a class e método que quero ir buscar?

Obrigado

Share this post


Link to post
Share on other sites
HideCode

Mas isso não vai ajudar no que estou a pedir porque assim nunca vou fazer o if que enho no javascript eu vou atualizar o que penso que está a ir no bom sentido.

C#

private static int numero = 12;
[WebMethod]
    [scriptMethod]
	 public static int Age(int numero)
	 {
			 return idade;
	 }

e o Javascript

function Idade(){
   PageMethods.Age(value, OnSucceeded, OnFailed);
}		   

function OnSucceeded(result, usercontext, Age) {
var resultado = result;
if (resultado > 1){
 $('#Formulario').Show();
}
else
{
 $('#Formulario').Show();
    }
}
function OnFailed(error, userContext, Age) {
alert("Erro!!");
}

<asp:ScriptManager ID="ScriptManager1" runat="server" ScriptMode="Release" EnablePageMethods="true" LoadScriptsBeforeUI="true" />

e está a dar-me o seguinte erro

Javascript runtime error: 'PageMethods' is undefined

Share this post


Link to post
Share on other sites
nelsonr

Tens o código como mostras ai?

Isto está a funcionar:

public partial class WebForm1 : System.Web.UI.Page
{
public static int idade = 1;

protected void Page_Load(object sender, EventArgs e)
{

}

[WebMethod]
public static int Age(int numero)
{
	return idade;
}
}

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
	<title></title>
	<script src="jquery-2.0.3.min.js"></script>
	<script type="text/javascript">
		var value = 1;

		function Idade() {
			PageMethods.Age(value, OnSucceeded, OnFailed);
		}

		function OnSucceeded(result, usercontext, Age) {
			var resultado = result;
			if (resultado > 1) {
				$('#Formulario').show();
			}
			else {
				$('#Formulario').hide();
			}
		}
		function OnFailed(error, userContext, Age) {
			alert("Erro!!");
		}
	</script>
</head>
<body>
	<form id="form1" runat="server">
	<div>
		<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true"></asp:ScriptManager>
		<a onclick="Idade(); return(false);" href="#">idade ?</a>
		<br />
		<div id="Formulario">Conteúdo do formulário</div>
	</div>
	</form>
</body>
</html>

Share this post


Link to post
Share on other sites
HideCode

Fiz exatamente como tens mas deu-me "Javascript runtime error: 'PageMethods' is undefined" e não está a ir buscar o valor que é retornado no método em C#.

Muito Obrigado pela ajuda

Share this post


Link to post
Share on other sites
Rechousa

Olá,

Vê se tens a propriedade EnablePageMethods = true definida no scriptmanager, assim:

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true" />

Existe outra forma de utilizares PageMethods sem necessidade do ScriptManager, vê aqui como o fazer. Já que usas jQuery, será fácil a sua implementação.

Espero ter ajudado,


Pedro Martins

Sharing is Knowledge!

http://www.linkedin.com/in/rechousa

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.