2014-11-04 10 views
6

widziałem w innym poście, że można wywołać funkcję JavaScript w kodzie maszynki tak:Wywołanie funkcji JavaScript w MVC 5 Widok Razor

@:FunctionName() 

Dla mnie jednak to wyjść tylko rzeczywista słowa FunctionName()

Oto mój widok:

@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> 
} 

Czy to dlatego, że zagnieżdżone go w `@if '? W każdym razie dookoła tego?

Odpowiedz

9

trzeba umieścić skrypt w <script> tagu, i trzeba wywoływać funkcje w ich zakresie:

<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

Dzięki. Czy składnia "@:" jest czymś? Czy zostało to przerwane? – Guerrilla

+2

Składnia '@:' mówi Razorowi, że traktuje to, co następuje jako zwykły tekst. W kontekście bloku kodu byłoby to konieczne, aby zapobiec uruchomieniu przez Razor próby uruchomienia metody 'FunctionName()' w kontekście C#/VB zamiast kontekstu JavaScript, gdzie faktycznie istnieje. –

+0

@Guerrilla Nie wstawiłem tego do Visual Studio, więc możliwe jest, że nadal będziesz potrzebować '@:' przed wywołaniami funkcji javascript. – jrummell

1

Jeśli przechodzą żadnych parametrów do funkcji JavaScript, musi być zamknięty z cytatami ("').

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

Powinieneś użyć opcji formatowania kodu (wybierz kod, Ctrl-k), aby upewnić się, że twój kod jest wyświetlany w sposób, jaki zamierzałeś znaleźć w odpowiedzi. Lepiej też użyć czegoś z pytania w swoim przykładzie, aby było jasne, o co ci chodzi. – Tibrogargan

Powiązane problemy