2014-11-04 20 views
6

che ho visto in un altro post che si può chiamare una funzione JavaScript nel codice di rasoio in questo modo:chiamando la funzione JavaScript MVC 5 vista Razor

@:FunctionName() 

Per me se questa emette solo le parole effettivamente FunctionName()

Qui è la mia opinione:

@model PriceCompare.Models.QuoteModel 

@{ 
    ViewBag.Title = "Quote"; 
} 

<h2>Quote</h2> 

@if (@Model.clarify == true) 
{ 
    // do drop down loic 
    @:ShowClarify(); 
} 
else 
{ 
    // fill quote 
    @:ShowQuote(); 
} 
<div class="clarify"> 

    You can see the clarify div 
</div> 
<div class="quote"> 

    You can see the quote div 
</div> 

@section head { 

    <script type="text/javascript"> 

     $(document).ready(
      function ShowQuote() { 
       $(".quote").show(); 
      }, 
      function ShowClarify() { 
       $(".clarify").show(); 
      } 
     ); 

    </script> 
} 

è perché ho annidato in un `@If '? Comunque intorno a questo?

risposta

9

È necessario mettere il javascript in un tag <script>, ed è necessario chiamare le funzioni all'interno del loro campo di applicazione:

<script type="text/javascript"> 

    $(document).ready(
     function ShowQuote() { 
      $(".quote").show(); 
     }, 
     function ShowClarify() { 
      $(".clarify").show(); 
     } 

     @if (@Model.clarify == true) 
     { 
      // do drop down loic 
      ShowClarify(); 
     } 
     else 
     { 
      // fill quote 
      ShowQuote(); 
     } 
    ); 

</script> 
+0

Grazie. La sintassi "@:" è una cosa? È stato interrotto? – Guerrilla

+2

La sintassi '@:' dice a Razor di trattare ciò che segue come testo normale. Nel contesto di un blocco di codice, questo sarebbe necessario per impedire a Razor di tentare di eseguire il metodo 'FunctionName()' in un contesto C#/VB invece di un contesto JavaScript, dove effettivamente esiste. –

+0

@Guerrilla Non l'ho messo in Visual Studio, quindi è possibile che tu possa ancora aver bisogno di '@:' di fronte alle chiamate di funzione javascript. – jrummell

1

Se si passa qualsiasi parametro per la funzione JavaScript, deve essere racchiuso tra virgolette ('').

foreach (var item in files) 
    { 
     <script type="text/javascript"> 
      Attachment(**'@item.FileName'**, **'@item.Size'**); 
     </script> 
    } 
+1

È necessario utilizzare le opzioni di formattazione del codice (selezionare il codice, Ctrl-k) per assicurarsi che il codice sia visualizzato nel modo in cui si intendeva che fosse nella risposta. Inoltre, è meglio usare qualcosa dalla domanda nel tuo esempio per chiarire cosa intendi. – Tibrogargan

Problemi correlati