Práticas recomendadas para passar dados do asp.net-mvc para o javascript

Eu tenho trabalhado com ASP.NET MVC e Javascript / jQuery muito ultimamente e parece que estou indo em uma direção onde eu estou sempre precisando passar algum valor dinâmico "para" meu javascript. Quando o script está bem na página, eu fiz algo assim:

var isEditable = <%=ViewData["editable"]%>

Eu gosto de como isso é rápido e fácil e apenas como eu injetar um valor em HTML. Mas isso cheira. Realmente, muito ruim. E isso quebra o intellisense e a formatação de código do Visual Studio, dificultando a leitura e a compreensão de meus scripts.

Ocorreu-me outra solução seria passar meus dados para um campo oculto e ter a referência de JavaScript que ...

<input type="hidden" id="editable" value="<%=ViewData["editable"]%>" />
var isEditable = $("#editable").attr("value");

Isso é provavelmente muito melhor, pois mantém o script intacto e me permite movê-lo para um arquivo .js externo. Mas algo sobre essa solução também não parece ideal. Ou é só comigo?

Alguém pode recomendar soluções e melhores práticas para passar dados para seus scripts? Eu estou indo para o caminho errado se meus scripts acabam confiando fortemente no viewdata dos meus controllers em primeiro lugar?

questionAnswers(4)

yourAnswerToTheQuestion