Passe um parâmetro para o método do servidor usando JavaScript
-
19-09-2019 - |
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
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