Enviar valor de tag html para o controller

Boa tarde,

queria saber como faço pra pegar o valor de uma tag qualquer do meu html e enviar para meu controller, por exemplo estou fazendo um projeto onde preciso da geolocalização de quem esta acessando o site, via javascript eu capturo essa localização e insiro no atributo “value” de uma tag no html, essa tag em especifico fica no topo da minha pagina e é uma area comum q todas as paginas do meu site terao, ou seja, no html tenho acesso a esta tag de qualquer parte do site, até ae tudo funciona bem, o problema é em capturar o valor desta tag e mandar para o controller para q eu possa fazer as querys baseadas na localização do usuario, pois como nao faço nenhum POST ao abrir o home por exemplo, o controller nao tem dados para ler, entao não faço ideia de como capturar o valor de uma tag qualquer do front.

Cara… até onde eu sei… se você quer mandar alguma informação do seu front para o backend você precisa fazer uma requisição pro servidor.

Caso você não queira fazer um GET ou um POST e ter que recarregar a página pra enviar essa informação, você pode usar ajax pra fazer a requisição de forma assíncrona.

Algo como:

var req;

function sendGeoPosition( ) {
    var geoPosition = document.getElementById("geoPosition");
    var url = "/sua_controller?geoPosition=" + geoPosition.value;
    if (window.XMLHttpRequest) {
        req = new XMLHttpRequest( );
    }
    else if (window.ActiveXObject) {
        req = new ActiveXObject("Microsoft.XMLHTTP");
    }
    req.open("Get", url, true);
    req.onreadystatechange = callback; //chama o callback caso esteja esperando alguma resposta do servidor
    req.send(null);
}

//use essa função apenas se esperar alguma resposta do servidor
function callback( ) {
    if (req.readyState==4) {
        if (req.status == 200) {
            //Faz alguma coisa com a resposta
            alert(req.responseText);
        }
    }
}

espero ter ajudado!

PS: esse código foi adaptado de um que eu uso para responder a sua dúvida… ele não foi testado!

Entendi, vou testar sua solução e ver se resolve, obrigado pela ajuda