Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Dúvida básica de organização de código

Olá pessoal!

Uma pergunta básica, como posso misturar um código Razor com javascript e organizar dentro de arquivos .js? Como por exemplo numa aplicação asp net onde chamo um web method através do page method e estando dentro de um arquivo .js?

Exemplo no asp net:

funcoes.js:

function chamaWebMethod(valor){
    PageMethods,Calcula(valor, sucess, error);
}

Gostaria de saber como posso fazer pra organizar códigos assim dentro de arquivos .js usando Razor do asp net mvc 5. Obrigado!

4 respostas
solução!

Olá, Lucas

O Razor roda no servidor e irá gerar código HTML, e ele precisa estar num arquivo .cshtml. Um arquivo .JS não irá rodar no servidor, e sim no browser.

Para acessar um método do servidor (isto é, um método do Controller) você precisa realizar uma chamada AJAX a partir do JavaScript. Isso é explicado na aula 9 do curso: https://cursos.alura.com.br/course/desenvolvimento-web-asp-net-mvc-5/task/4693

Marcelo, obrigado pela resposta, eu entendo que o Razor só se comunica assim com o servidor, mas pensei que havia alguma forma de fazer se comunicar igual por exemplo o PageMethods que usamos em web forms.

Fiz com requisição ajax mesmo, me ajudou, valeu!

Oi Lucas

Ah, os bons tempos do web forms, já mexi muito com isso.. :-)

O problema é que o webforms "mascarava" o real funcionamento da web, e dava ao programador a falsa impressão de que ele podia clicar num botão do HTML e chamar um evento no servidor sem problemas. Isso era bem legal para o desenvolvedor acostumado com windows forms. Mas trazia uma série de problemas, como os famosos "postbacks" e o objeto "viewstate", que ia ficando enorme, e aumentava o volume de dados trafegados entre cliente e servidor.

Outro problema é que o webforms dava a impressão de que os eventos da web são síncronos (isto é, clicou botão = executou método). As requisições AJAX, além de serem mais simples e econômicas, tratam as chamadas como elas realmente são: assíncronas.

Que bom que conseguiu. Obrigado por participar do fórum. Qualquer coisa estamos aí!

É isso Marcelo! Obrigadão mesmo pela ajuda.