Equivalente do window.innerWidth do Javascript no ASP.NET MVC

06/04/2015

Olá,
Estou precisando saber em uma aplicação ASP.NET MVC, seja em nível de Controller ou em nível de view a dimensão da janela do Browser.
Consegui através do javascript com window.innerWidth; só que não sei como passar esse valor para o C#. Nem para a view, nem para o controller.
Então se alguém souber como posso obter esse valor ou em nível de controller, ou em nível de view ou ainda se puder chamar uma função javascript e obter esse valor. Tentei um HtmlHelper EditorFor e joguei esse valor para esse EditorFor para ver se ao jogar esse valor através do getElementById se atualizava o valor no model, mas não aconteceu isso. Alguém poderia me dar uma idéia de como conseguir isso?
Obrigado,
Jairo

Melhor resposta

07/04/2015

Olá, Jairo.
Essa é uma verificação própria do browser, não do servidor, por isso não pode ser feita no Controller. Ela realmente tem que ser feita na View e com JavaScript (meio caminho você já andou). Existem algumas formas de passar isso para o controller, mas vai depender muito da sua necessidade. Por exemplo:
- Colocar esse valor em um input hidden que esteja dentro de um form e ao submeter esse form, esse valor iria junto;
- Enviar esse valor ao Controller via Ajax;
Qual é exatamente sua necessidade de acessar esse valor no lado servidor da sua aplicação?

Joel Rodrigues

Responder Citar

Outras Respostas

10/04/2015

Jairo Currículo

Oi Joel,
Antes de mais nada, obrigado pela sua boa vontade.
Suponha que eu tenha uma view que apresenta no momento atual, o status dos equipamentos que eu disponho. (se está trabalhando, parado,quebrado etc.) Se o usuário clicar em algum deles, o programa deverá apresentar detalhadamente por hora o que esse equipamento fez. Os dados são apresentados em uma view. Gostaria de saber as dimensões da tela par configurar as colunas da view em função dessa dimensão. Colocaria mais ou menos colunas.
Mais uma vez, obrigado
Jairo
Responder Citar

10/04/2015

Joel Rodrigues

Essa segunda view será aberta em um modal ou algo do tipo? Porque se você for redirecionar para outra view quando clicar na tabela, essa verificação da largura pode ser feita diretamente na view dos dados e ja alterar o HTML la mesmo. Deu pra sacar a ideia?
Responder Citar

12/04/2015

Jairo Currículo

Olá Joel,

Não é modal não Quando clica nessa primeira tela, há o retorno para o controller que vai chamar a outra view.
O problema é exatamente isso, Quem monta a view é o Razor, eu consigo achar o tamanho da tela no javascript, mas não sei como passar esse valor para o model ou para o razor ou para o C#. Não consigo.

Obrigado,
Jairo
Responder Citar

13/04/2015

Joel Rodrigues

Então, como eu disse esse procedimento de montagem do layout pode ser feito diretamente na view final.
Uma forma seria você montar todas as colunas e, de acordo com a largura da tela, esconder algumas via JavaScript. Isso seria feito com um script JS dentro da view.
Responder Citar

13/04/2015

Jairo Currículo

Oi Joel,
Talvez eu não esteja conseguindo me explicar bem. Quem monta a view é o Razor.
Eu NÃO consigo passar o valor do Javascript para o Razor. Esse é o meu problema.
você poderia dar uma idéia do que é que você está falando?
Obrigado,
Jairo
Responder Citar

13/04/2015

Jairo Currículo

Oi Joel,
Talvez eu não esteja conseguindo me explicar bem. Quem monta a view é o Razor.
Eu NÃO consigo passar o valor do Javascript para o Razor. Esse é o meu problema.
você poderia dar uma idéia do que é que você está falando?
Obrigado,
Jairo
Responder Citar

13/04/2015

Jairo Currículo

Oi Joel,
Talvez eu não esteja conseguindo me explicar bem. Quem monta a view é o Razor.
Eu NÃO consigo passar o valor do Javascript para o Razor. Esse é o meu problema.
você poderia dar uma idéia do que é que você está falando?
Obrigado,
Jairo
Responder Citar

13/04/2015

Jairo Currículo

Oi Joel,
Talvez eu não esteja conseguindo me explicar bem. Quem monta a view é o Razor.
Eu NÃO consigo passar o valor do Javascript para o Razor. Esse é o meu problema.
você poderia dar uma idéia do que é que você está falando?
Obrigado,
Jairo
Responder Citar

13/04/2015

Joel Rodrigues

Então, Jairo. Tenha em mente que o Razor basicamente escreve código HTML na view. Se você executar sua aplicação e no browser inspecionar o código, verá que não tem nada além de HTML. Esses métodos do tipo Html.TextBoxFor são chamados de Helper Methods exatamente porque facilitam a escrita de HTML a partir de dados do model, por exemplo.

Assim, considerando que sua view esteja montada com todas as colunas, você pode em um script esconder uma ou outra coluna. Algo desse tipo:

<script >
$(function(){
.  if (window.innerWidth < 1024)
.    $("#coluna4").hide();
});
</script>


Ai estou usando jQuery, mas você pode fazer com JavaScript puro, apesar de assim ser mais fácil.

Caso fiquem dúvidas, é só dizer.
Responder Citar

14/04/2015

Jairo Currículo

Oi Joel,

Vou tentar desta forma que você colocou.
Beleza!

Muito obrigado por sua boa vontade e paciencia.

Jairo
Responder Citar