Ir para o conteúdo
HideCode

Chamar função c# em Javascript

Mensagens Recomendadas

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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Editado por brunoais
geshi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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>

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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>

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.