2014-11-04 8 views
6

ich in einem anderen Beitrag gesehen haben, die Sie wie so eine JavaScript-Funktion in Ihren Rasierer Code aufrufen können:aufrufen JavaScript-Funktion in MVC 5 Razor Ansicht

@:FunctionName() 

Für mich, obwohl dies nur gibt die tatsächlichen Worte FunctionName()

Hier ist meine Ansicht:

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

ist es, weil ich es in einem `@if 'verschachtelt haben? Wie auch immer darum herum?

Antwort

9

Sie benötigen Javascript, in einem <script> Tag legen, und Sie müssen die Funktionen in ihrem Umfang nennen:

<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

Danke. Ist die "@:" - Syntax etwas? Wurde es eingestellt? – Guerrilla

+2

Die '@:' - Syntax weist Razor nur an, das Folgende als reinen Text zu behandeln. Im Kontext eines Codeblocks wäre dies erforderlich, um zu verhindern, dass Razor versucht, die Methode 'FunctionName()' in einem C#/VB-Kontext anstelle eines JavaScript-Kontexts auszuführen, in dem sie tatsächlich existiert. –

+0

@Guerrilla Ich habe dies nicht in Visual Studio eingefügt, also ist es möglich, dass Sie noch '@:' vor den JavaScript-Funktionsaufrufen benötigen. – jrummell

1

Wenn Sie Parameter an die JavaScript-Funktion sind vorbei, muss sie mit Anführungszeichen eingeschlossen werden ('').

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

Sie sollten die Code-Formatierungsoptionen verwenden (wählen Sie den Code, Strg-k), um sicherzustellen, dass Ihr Code in der Weise angezeigt wird, wie Sie es in Ihrer Antwort haben wollten. Außerdem ist es besser, etwas aus der Frage in Ihrem Beispiel zu verwenden, um deutlicher zu machen, was Sie meinen. – Tibrogargan