2011-06-28 3 views
7

Je suis nouveau sur MVC 3, moteur de vue rasoir. Je veux définir la visibilité d'une zone de texte lors de l'exécution selon la valeur de mon modèle.Définition de la visibilité d'une zone de texte dans le moteur de vue MVC3 Razor

Mais le code ci-dessous ne fonctionne pas.

<td> 
    @Html.TextBox("CompanyName", "", new { visible = "false" }) 
</td> 

Une fois le code ci-dessus commence à travailler, je pourrais mettre en place @Model.EnableCompanyName de hardcoded "false".

Alors s'il vous plaît aidez-moi à rectifier le code ci-dessus.

Répondre

14

Cela va changer le type d'affichage en fonction de votre bool Model.EnableCompanyName :)

Hope it helps!

@{ 
String displayMode = (Model.EnableCompanyName) ? "inline" : "none"; 
@Html.TextBox("CompanyName", "", new { style = "display:" + displayMode + ";" }) 
} 
+0

Thx Chris. Il suffit de remplacer none par false dans votre première affectation et son fonctionnement comme prévu. – Biki

+0

Woops! Erreur d'écolier lol. Réponse mise à jour pour refléter cela. :) – Chris

2

(ÉDITÉ)

@Html.TextBox("CompanyName", "", new { style = Model.EnableCompanyName ? "display:inline" : "display:none" })

+0

Salut, Même le hardcoding de false ne fonctionne pas. Par exemple: @ Html.TextBox ("CompanyName", "", new {visible = "false"}) ne fonctionne pas. – Biki

+0

donc, vous devez passer: new {style = "display: none"} –

+1

La prochaine fois, essayez de spécifier plus précisément ce que vous voulez. Si vous ne savez pas comment cacher l'élément DOM c'est une autre question. Je t'ai juste mal compris. –

9

Il n'y a rien à voir avec le rasoir en tant que tel. visible n'est pas un attribut valide pour un élément input (qui sera généré par Html.TextBox). Vous avez besoin

@Html.TextBox("CompanyName", "", new { style = "display:none;" }) 

Voir cet exemple ici:

http://jsfiddle.net/QxSpU/

0

Ajouter @ Html.TextBox ("CompanyName", "", nouveau {style = Model.EnableCompanyName? "Visibility: visible": "visibility: hidden"})

Questions connexes