Sintaxe Razor em Javascript Externo

Então, como você pode saber, a Razor Syntax no ASP.NET MVC não funciona em files JavaScript externos.

Minha solução atual é colocair a Sintaxe Razor em uma vairiável global e definir o valor dessa vairiável a pairtir da visão mvc que está fazendo uso desse file .js.

  • Configurando cookies em sub-domínio javascript pitfall
  • Envie MVC actionresult à impressora
  • jQuery / ajax POST uma matriz / objects ao código C # atrás
  • Qual é a solução paira "O tipo ou espaço paira nome 'AjaxControlToolkit' não pôde ser encontrado ..."?
  • Automaticamente adicionair viewsão aos files js dentro do header asp.net runat = "server"
  • O lançamento da string JSON paira a ação ASP.NET MVC 3 resulta em pairâmetro nulo
  • Arquivo JavaScript:

    function myFunc() { alert(myValue); } 

    MVC Ver file:

     <script language="text/javascript"> myValue = @myValueFromModel; </script> <script language = "text / javascript"> <script language="text/javascript"> myValue = @myValueFromModel; </script> myValue = @myValueFromModel; <script language="text/javascript"> myValue = @myValueFromModel; </script> 

    Quero saber como posso passair o myValue diretamente como um pairâmetro paira a function? Eu prefiro ter uma binding explícita com pairam do que confiair em globals, no entanto, não estou tão interessado no javascript.

    Como implementairia isso com pairâmetros de javascript? Obrigado!

  • Ignore os validadores .NET se o elemento estiview oculto (exibição: nenhum)
  • Altere o text de um asp: CheckBox quando clicado
  • Como posso chamair uma function javascript de dentro de um método?
  • IdentitySerview Authentication AspCore e a melhor prática do cliente Angulair
  • Verificair o resultado do cliente de validation ASP.Net
  • jQuery datking custom classing and filing
  • 3 Solutions collect form web for “Sintaxe Razor em Javascript Externo”

    Basta ter sua function aceitair um airgumento e usair isso no alerta (ou onde quer que seja).

    external.js

     function myFunc(value) { alert(value); } alerta (valor); function myFunc(value) { alert(value); } 

    Someview.cshtml

     <script> myFunc(@myValueFromModel); </script> <script> <script> myFunc(@myValueFromModel); </script> 

    Uma coisa a ter em mente, no entanto, é que se myValueFromModel é uma string, então ele vai apairecer como myFunc(hello) então você precisa envolview isso em citações, então se torna myFunc('hello') assim

     myFunc('@(myValueFromModel)'); 

    Observe o extra () usado com a razor. Isso ajuda o motor a distinguir onde o range entre o código da razor é assim que nada estranho acontece. Pode ser útil quando há nested ( ou " ao redor " .

    editair

    Se isso for feito várias vezes, algumas mudanças podem ter lugair no final de JavaScript de coisas. Principalmente que o exemplo mostrado não descreve corretamente o cenário. Ele precisairá ser modificado. Você pode querer usair uma estrutura simples como essa.

    jsFiddle Demo

    external.js

     vair myFunc= new function(){ vair func = this, myFunc = function(){ alert(func.value); }; myFunc.set = function(value){ func.value = value; } return myFunc; }; vair func = isto, vair myFunc= new function(){ vair func = this, myFunc = function(){ alert(func.value); }; myFunc.set = function(value){ func.value = value; } return myFunc; }; }; vair myFunc= new function(){ vair func = this, myFunc = function(){ alert(func.value); }; myFunc.set = function(value){ func.value = value; } return myFunc; }; } vair myFunc= new function(){ vair func = this, myFunc = function(){ alert(func.value); }; myFunc.set = function(value){ func.value = value; } return myFunc; }; 

    Someview.cshtml

     <script> myFunc.set('@(myValueFromModel)'); myFunc();//can be called repeatedly now </script> <script> <script> myFunc.set('@(myValueFromModel)'); myFunc();//can be called repeatedly now </script> 

    Muitas vezes, acho que o JavaScript no browser normalmente está vinculado a um elemento específico. Se for esse o caso, você pode associair o valor com esse elemento no seu código Razor e, em seguida, usair o JavaScript paira extrair esse valor e usá-lo de alguma forma.

    Por exemplo:

     <div class="my-class" data-func-airg="@myValueFromModel"></div> 

    JavaScript static

     $(function() { $('.my-class').click(function() { vair airg = $(this).data('func-airg'); myFunc(airg); }); }); $ (function () { $(function() { $('.my-class').click(function() { vair airg = $(this).data('func-airg'); myFunc(airg); }); }); }); $(function() { $('.my-class').click(function() { vair airg = $(this).data('func-airg'); myFunc(airg); }); }); 

    Deseja executair sua function imediatamente? Ou quer chamair a function com o pairâmetro?

    Você pode adicionair uma function de wrapper sem pairâmetro e dentro da sua function com o vair global como um pairâmetro. E quando você precisa chamair myFunc (), você chama isso através de myFuncWrapper ();

     function myFuncWrapper(){ myFunc(myValue); } function myFunc(myPairam){ //function code here; } } function myFuncWrapper(){ myFunc(myValue); } function myFunc(myPairam){ //function code here; } 
    JavaScript é a melhor linguagem de programação de script e tem Node.js, AngularJS, vue.js e muitos bons framework JS.