Y at-il une meilleure façon par rapport à @if @else Juste pour modifier quelques attributs (comme désactivé, valeur, classe, etc) de l'élément html dans la page cshtml construit avec vue Razor?MVC3 Razor View Optimisation
Répondre
MVC 4/Razor V2 aura quelques améliorations:
Rendu d'attribut conditionnel
Si vous avez un attribut qui pourrait être nulle, dans le passé, vous avez besoin de faire un chèque nul pour éviter d'écrire sur un attribut vide, comme ceci:
<div @{if (myClass != null) { <text>class="@myClass"</text> } }>Content</div>
maintenant rasoir est capable de gérer cela automatiquement, de sorte que vous pouvez simplement écrire l'attribut. Si elle est nulle, l'attribut est pas écrit:
<div class="@myClass">Content</div>
Donc, si @myClass
est null
, la sortie est ceci:
<div>Content</div>
qui serait être fonctionnalité étonnante .. comme ça :) – Aman
Je ne sais pas pourquoi vous pensez qu'il ya une faille de performance avec un rasoir @if
mais vous pouvez utiliser votre ViewModel
ou ViewBag
pour cela:
<input type="text" value="@(ViewBag.TheValue)" />
Mais pour les meilleures pratiques, Ne pas mélanger la logique côté serveur avec la présentation. « séparé des préoccupations »
Mise à jour (Qu'est-ce que je veux dire par « distincte des préoccupations »):
Il signifie la vue devrait contenir autant que possible, balises HTML et les assistants HTML (qui vous aident simplement à écrire des balisages) uniquement. Ne mettez pas de logique dans la vue. ne réutilisez pas la même vue si elle vous fait mettre du code dedans.
Je souhaite ranger le code.Je dois utiliser des instructions multiples et imbriquées sinon else qui ont généré des conflits dans 'ID' des éléments aussi. – Aman
@ user1270199. Montrer du code ** réel **. On dirait que vous utilisez le rasoir dans le mauvais sens! – gdoron
quand vous dites "Ne pas mélanger la logique côté serveur avec la présentation" cela signifie-t-il utiliser Viewbag.Value pour tous les attributs dynamiques? – Aman
Vous pouvez les transmettre dans le ViewModel en tant que valeurs true/false ou valeurs de chaîne. Par exemple -
- tout ce qui doit être réglé dynamiquement être activé ou désactivé - vous pouvez créer un bool
- toute classe html qui est une chaîne réglée sur l'exécution, peut être passé comme une variable de chaîne dans votre modèle de vue.
etc.
afin de nettoyer votre point de vue de rasoir de tous les @if déclarations d'autre
hmm sonne comme intéressant-html.helpers pourrait être plus intéressant (j'ai vu dans google;)) – Aman
je ne sais pas comment vous prévoyez d'utiliser html helpers à cette fin – MoXplod
comme utilisant MvcHtmlString StatusClass pour sélectionner une classe perticular basé sur la condition .. Je ne suis pas à portée de main dans les méthodes d'extension MvcHtmlString si :( – Aman
vous pouvez utiliser des instructions conditionnelles en ligne ainsi:
<input type="text" value="@(true == true ? "one value" : "another value")" />
- 1. MVC3 Razor View Engine
- 2. Remplacer MVC3 View Engine avec Razor v2?
- 3. MVC3 Razor View Sélection multiple Dropdown
- 4. Exécuter JavaScript avec MVC3 RAZOR View Engine?
- 5. MVC3 Custom View Base
- 6. Comment écrire une session dans MVC3 View (Razor)?
- 7. MVC3 Razor Aide requise
- 8. Html.Partial dans Razor View Engine
- 9. Exemple d'application MVC3 Razor
- 10. MVC3 Razor pour Multilanguage
- 11. MVC3 Razor Combo box
- 12. Razor formating-MVC3
- 13. MVC3 moteur Razor
- 14. Razor MVC3 Routage/Navigation
- 15. Panneau pliable - MVC3 - Razor
- 16. Références externes non référencées dans Razor View
- 17. Sender-récepteur avec Razor MVC3
- 18. Razor View Engine Syntaxe
- 19. Razor View Extension Méthode?
- 20. Optimisation SQL View
- 21. Dynamique JqGrid ColModel MVC3 (Razor)
- 22. KeyPairValue dans ASP.NET MVC3 Razor
- 23. MVC3 Razor Code Soupe - Templating?
- 24. Rapports RDL avec MVC3 (Razor)
- 25. Razor mvc3 + jquery + UrlAction + PartialViews
- 26. MVC3 Razor Html.TextBoxFor Champs calculés
- 27. BreadCrumb trail MVC3 et Razor
- 28. Implémentation multilingue dans MVC3 Razor
- 29. MVC3 numéro de concaténation Razor
- 30. ASP.NET MVC3 Razor - Que fait @ *?
Eh bien, je ne sais pas comment éviter "if/else". Peut-être que la syntaxe short if/else vous aidera @ (true? "Enabled": "disabled"). Autre façon de créer des valeurs d'attribut helper ou count dans le contrôleur –