Pergunta

Eu tenho um público no meu código atrás da página que leva uma string. Eu gostaria de chamar esse método da JavaScript.

O parâmetro que eu quero passar é variável que muda de um DDL.

Então eu tenho algo assim:

 var value = document.getElementById('ddlContact').value;
        <%=PopulateContactFields("value") %>

Isso passa a palavra 'valor' e não os dados em valor.

Não consigo descobrir a sintaxe adequada para transmitir os dados em valor.

Obrigado

Foi útil?

Solução

Como mencionado por outros, é impossível tentar acessar o código C# diretamente do JavaScript.

No entanto, você pode se comunicar com isso indiretamente.

Eu acho que sua melhor foto é usar uma combinação de jQuery e o [WebMethod] atributo.

JavaScript Função usando o jQuery para fazer uma chamada de Ajax:

function Search() {
    var search = $('#<%= ddlContact.ClientId %>').val();
    var options = {
        type: "POST",
        url: "Default.aspx/Hello",
        data: "{'name' :'" + search + "'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(msg) {
            alert(msg);
        }
    };
    $.ajax(options);
}

Código por trás:

public partial class _Default : System.Web.UI.Page
{
    [WebMethod]
    public void Hello(string name)
    {
      return "Hi " + name;
    }
}

Outras dicas

O código que você está mostrando é executado no lado do servidor quando o HTML é gerado. Em outras palavras, ele é executado antes de atingir o navegador e seu usuário teve a chance de fazer qualquer coisa com a página.

Não importa qual sintaxe você usaria aqui, as informações que deseja não podem ser acessadas no momento - elas ainda não existem.

A abordagem correta aqui é enviar essas informações ao servidor postando a página ou usando o Ajax e, em seguida, no final da solicitação/ciclo de resposta, faça seu processamento

Outra opção seria fazer o lado do cliente de processamento usando JavaScript

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top