Pergunta

Estou trabalhando com ASP.net.

Estou tentando chamar um método que existe na classe base da página que estou usando.Quero chamar esse método via Javascript e não preciso que nenhuma renderização seja tratada pelo ASP.net.

Qual seria a maneira mais fácil de conseguir isso.

Examinei PageMethods que, por algum motivo, não estão funcionando e descobri que muitas outras pessoas tiveram problemas com eles.

Foi útil?

Solução

Depende do que o método depende, mas supondo que seja um método estático ou que não dependa do ciclo de vida da página para funcionar, você pode expor um endpoint de serviço da web e acessá-lo com qualquer mecanismo de chamada Javascript que você gostaria de usar.

Outras dicas

Qual biblioteca você está usando para fazer chamadas Ajax?Se você estiver usando JQuery, poderá criar métodos estáticos e chamá-los em sua página.Deixe-me saber se você precisa de ajuda adicional!

Como sugere o Thunder3, exponha um serviço da Web.Depois de fazer isso, você pode registrar o webservice no ScriptManager (ou ScriptManagerProxy), o que fará com que um wrapper JavaScript seja gerado.Este wrapper oferece uma boa interface para a chamada.

Para estender o ponto levantado por @Azam, se não quiser renderizar o html na página, você pode definir o tipo de retorno para algo diferente, como xml, e fazer um response.write como fiz no código abaixo.Durante o GET, quero enviar de volta o HTML, mas durante o POST, envio de volta algum XML pela rede.

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Response.Cache.SetCacheability(HttpCacheability.NoCache)
        If Request.HttpMethod = "GET" Then
            'do some work and return the rendered html
        ElseIf Request.HttpMethod = "POST" Then
            'do some work and return xml
            Response.ContentType = "text/xml"
            Response.Write("<data></data>")
            Response.End()
        Else
            Response.StatusCode = 404
            Response.End()
        End If
    End Sub
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top