2011-04-20 1 views
4

Pourquoi ne pas le moteur de modèle de rasoir comme:MVC3 Razor - déclarations Javascript avec le serveur imbriqué ifs

@if (Model.ActionComplete) { 
    <script type="text/javascript"> 

     @if (Model.Message.IsString()) { 

     } 

    </script> 
} 

Il se plaint que le Model dans Model.Message devrait être une constante et que la balise </script> manque un @ déclaration de fin.

Je suis en train de se rendre à:

@if (Model.ActionComplete) { 
    <script type="text/javascript"> 
    $(document).ready(function() { 
     $("#user-form").slideUp(); 
     @if (Model.Message.IsString()) { 
     @:showMessageBar("@(Model.Message)"); 
     } 
    }); 
    </script> 
} 
+3

En raison de la séparation des préoccupations. Pourquoi compilez-vous votre javascript en fonction des informations sur le serveur? JavaScript est utilisé pour améliorer l'expérience, les informations côté serveur sont injectées dans votre code HTML. La vue convertit un modèle en HTML. JavaScript devrait être dans un fichier externe séparé de toute façon, loin de votre serveur. – Raynos

+7

Ce n'est pas ce que j'ai demandé, tenez-vous en à la réponse, je n'ai pas demandé d'argument sur l'ajout de la logique View à ma vue. –

+0

Avez-vous imbriqué cette syntaxe dans une autre syntaxe Razor/

0

Votre syntaxe semble correcte. Pourriez-vous confirmer si, au moment de l'exécution, la page produit ce que vous attendez? Le moteur IntelliSense pour Razor v1 a encore quelques bizarreries, surtout si vous avez C# dans JavaScript à l'intérieur du code HTML.