Acredito que todo mundo tentou usar o JavaScript em uma visão e você pode usar diretamente a sintaxe da Razor para chamar alguns métodos do .NET. Como o código a seguir é aninhado em uma visualização de barbear:
<Cript> var Currdate = '@DateTime.now'; // Ligue diretamente ao .NET Method Console.log (Currdate) </sCript>
Mas outra situação é que, se eu quiser usar o RAZOR em um arquivo JS separado, o método acima não funcionará, porque o MVC não interpretará diretamente o arquivo JS e só pode ser colocado na visualização de barbear. No entanto, aqui recomendo uma biblioteca de terceiros para você, que permite que você use Razor diretamente em arquivos JS independentes
O nome desta biblioteca é Razorjs. Este é um projeto de código aberto. Você pode baixar o código -fonte do seguinte endereço:
https://bitbucket.org/djsolid/razorjs
Ou você pode instalá -lo diretamente através do NUGET:
PM> Install-Package Razorjs
Ok, vamos falar sobre o que essa biblioteca pode trazer para nós primeiro. Após a instalação, você pode usar diretamente todos os métodos suportados pelo .NET no arquivo JS. Por exemplo, o código acima pode ser colocado diretamente em um arquivo JS independente para uso. Além disso, você também pode consultar o espaço nomes completo do .NET no arquivo JS. Se você deseja chamar o objeto de arquivo para ler o conteúdo do arquivo de texto, você pode consultar diretamente o espaço de nome System.io:
@Using System.io; var s = 'Olá em @dateTime.now /n @file.readallText (System.web.hosting.hostingenvironment.mappath ("~ /web.config")))';Após a execução, você pode obter diretamente todo o conteúdo do arquivo web.config no JS. Parece muito bom, haha. Então, como exatamente esse tipo de biblioteca funciona? De fato, ele usa uma biblioteca de classes chamada RazorEngine para alcançar os efeitos acima. O RazorEngine é um mecanismo de explicação de barbear que é muito poderoso e eu o usei em alguns projetos antes. Através deste mecanismo, você pode até usar a sintaxe de barbear diretamente no formulário WIN. Haha, eu me pergunto se você tem alguma idéia de seus benefícios?
Bem, bom, com este mecanismo, você pode usar a Razor da MVC em um ambiente da Web completamente independente. Esta função permite que você faça alguns modelos flexíveis de maneira muito conveniente, como alguns modelos de email. Você pode usar diretamente vários métodos .NET ou mesmo objetos personalizados no modelo e, em seguida, gerar dinamicamente o conteúdo desejado. Ok, mas este motor não é o que eu quero apresentar desta vez, estou apenas falando sobre isso aqui
Em seguida, vamos falar sobre o uso de Razorjs. Se você o instalar diretamente através do NUGET, configurará automaticamente o web.config para você. Este é o método de instalação recomendado. Caso contrário, você deve adicionar a configuração no web.config. Existem vários lugares, e eu não vou entrar em detalhes aqui. Você pode compará -lo depois de instalá -lo. Também é muito simples usar Razorjs, basta consultar o arquivo JS que você deseja usar a seguinte sintaxe:
<p> @html.razorjsinline ("~/scripts/exemplo.js") </p>No entanto, uma coisa a observar é que haverá um diretório em seu web.config que permite que os Razorjs usem, ou seja, seu arquivo JS deve ser colocado neste diretório antes que você possa usar este método para referência:
<RazorjSsettings HandlerPath = "~/Razorjs.axd"> <burgedPaths> <add path = "~/scripts"/> </listoredPaths> </razorjSsettings>
A última coisa que quero falar são suas limitações. Existem coisas boas e lados ruins. Como usa RazorEngine, você não pode usar o método HTML Helper de MVC em JS, ou seja, todos os métodos que começam com @HTML. Outro problema é que ele não pode reconhecer o código de comentários no JS. Ou seja, se você usar os métodos .NET nos comentários, ele também será executado. Se o seu método estiver correto, não haverá problema. Caso contrário, a execução do JS será interrompida e um erro será relatado diretamente. Portanto, não pense que o método inútil é suficiente para comentar.
Em relação ao problema de não ser capaz de executar o Helper @HTML, forneço outra solução aqui, mas isso permite modificar seu código -fonte. Amigos que querem jogar podem experimentar. De fato, você pode usar muitos métodos personalizados para fazer isso, o que é mais flexível e conveniente. Depois de baixar o código -fonte Razorjs, você pode modificá -lo diretamente e recompilar uma DLL. Outra maneira é usar seu código -fonte como outro projeto e adicioná -lo diretamente ao seu próprio projeto.
Em seu código -fonte, abra o arquivo htmltemplatebase.cs e você pode adicionar seus próprios métodos aqui e, em seguida, todos os métodos adicionados aqui podem ser chamados diretamente no JS. Se você encontrar um método HREF encapsulado no código -fonte, poderá converter o URL em um URL disponível no cliente solicitante. De acordo com este método de redação, podemos adicionar nossos próprios métodos, como o seguinte é o meu método para encapsular um arquivo de recursos internacionais dinamicamente, para que possamos usar diretamente os arquivos de recursos .NET no JS para internacionalização:
classe pública htmltemplatebase: templatebase {// chame manualmente o gerenciador de arquivos de recursos privado estático ResourceManager Resources = (ResourceManager) system.type.gettype ("razorjs.resource"). getProperty ("ResourceManager"). public htmlTemplateBase () {url = new urlhelper (httpContext.current.request.requestContext); } public string href (string originalUrl) {return extensions.resolveurl (originalurl); } public string getLangText (string Langkey) {retorna linguagem relacionada com base nos principais recursos de retorno.getString (Langkey); } public urlhelper url {get; definir; }}Em seguida, chame diretamente em JS:
var s = '@GetLangText ("coderBlog")'; console.log (s);Após a execução, você pode inserir diretamente o conteúdo da tecla CoderBlog no JS.