/ / Referenciando jQuery em cshtml usando HTML helper - jquery, modelo-view-controller, html-helper, global-asax

Referenciando jQuery em cshtml usando HTML helper - jquery, modelo-view-controller, html-helper, global-asax

Eu costumo referir um jQuery usando:

<script src="@(Url.Content("~/JavaScript/jquery.maskedinput-1.2.2.js"))" type="text/javascript"></script>

Eu refiro o mesmo Jquery em muitas páginas. Qualquer alteração no conteúdo estático (nome ou número da versão) requer que todas as visualizações sejam atualizadas para absorver a alteração. Para resolver isso, tentei criar rotas no arquivo Global.asax para Jquery como abaixo.

routes.MapRoute("jquery.maskedinput.js", "Javascript/jquery.maskedinput-1.2.2.js");

e eu tentei chamá-lo em cshtml usando um Html Helper como abaixo

 <script src="@Html.RouteLink("maskedinput","jquery.maskedinput.js") " type="text/javascript"></script>

Eu sei RouteLink retorna uma marca de âncora e por isso a fonte não está corretamente definida para o jQuery para carregar.

Requisitos:

  1. Existe algum outro auxiliar Html que pode retornar apenas o virtual caminho (ou)
  2. Eu preciso referir Jquery com um nome não com um caminho. O caminho deve ser declarado em algum lugar globalmente para que uma única mudança na arquivo global pode resolver o propósito.

Ajude-me, por favor.

Respostas:

2 para resposta № 1

Eu uso esse método para o meu BundleCollection com System.Web.Optimization Vejo minha pergunta, mas isso ainda funciona mesmo sem ele.

namespace PROJECT.Classes
{
public class JSBundles
{
public static string Test = "/scripts/test.js";
}

então use-o assim:

<script src="@(JSBundles.Test)" type="text/javascript"></script>

que processa

<script src="/scripts/test.js" type="text/javascript"></script>

Note que isso requer uma referência na sua opinião para PROJECT.Classes ou onde quer que você coloque. Eu tenho essa configuração na minha web.config na pasta de visualizações.

....
<add namespace="PROJECT.Classes" />
</namespaces>
</pages>
</system.web.webPages.razor>

1 para resposta № 2

Você poderia usar o popular e incrível RequireJS para injetar jquery (e quaisquer outras dependências js) usando javascript ao invés de servi-los manualmente

http://requirejs.org/docs/jquery.html fornece instruções de configuração e uso