Commutez l'instruction à l'intérieur de Razor CSHTML
Je suis élaboration d'un projet en ASP.NET MVC4, Twitter.Bootstap 3.0.0 et Rasoir. Dans un Avis, j'ai besoin d'afficher des boutons en fonction de la valeur d'une propriété. À l'aide de la switch
déclaration, l'exemple ci-dessous ne fonctionne pas (rien ne s'affiche):
@switch (Model.CurrentStage) {
case Enums.Stage.ReadyToStart:
Html.ActionLink(Language.Start, "Start", new { id=Model.ProcessId }, new { @class = "btn btn-success" });
break;
case Enums.Stage.Flour:
Html.ActionLink(Language.GoToFlour, "Details", "Flours", new { id=Model.Flour.FlourId }, new { @class = "btn btn-success" });
break;
...
}
Changer un peu, à l'aide d'un <span>
tag, le code fonctionne:
@switch (Model.CurrentStage) {
case Enums.Stage.ReadyToStart:
<span>@Html.ActionLink(Language.Start, "Start", new { id=Model.ProcessId }, new { @class = "btn btn-success" })</span>
break;
case Enums.Stage.Flour:
<span>@Html.ActionLink(Language.GoToFlour, "Details", "Flours", new { id=Model.Flour.FlourId }, new { @class = "btn btn-success" })</span>
break;
...
}
Quelqu'un peut m'expliquer pourquoi?
Grâce.
source d'informationauteur Cigano Morrison Mendez
Vous devez vous connecter pour publier un commentaire.
C'est le funkiness de Rasoir. Lorsque vous êtes en HTML et l'utilisation de code C#, mettre quelque chose avec un
@
symbole sur elle écrira le résultat à la page:Ceci est similaire à la vieille école
<%= %>
.Cependant, le Html.ActionLink méthode retourne simplement une
MvcHtmlString
objet dans le .Monde NET. Dans ton premier exemple, vous avez un régulier C# bloc de code. Afin de l'appelantHtml.ActionLink()
à partir de là tout simplement l'exécute et renvoie leMvcHtmlString
à personne. Dans ton deuxième exemple, vous avez sauté en arrière dans le code HTML du contexte, de sorte qu'il écrit le code HTML de nouveau.Vous pouvez utiliser le
<text>
bloc pour revenir au format HTML au lieu d'utiliser<span>
ou d'autres biens HTML, et il va écrire directement sans avoir à écrire de l'HTML supplémentaire:Vous pouvez également utiliser la même
@:
syntaxe:Vous pouvez lire plus sur les deux ici
MODIFIER
En fait, dans ce cas, vous n'en avez pas besoin. Vous avez juste besoin de la
@
symbole, qui sera assez pour vous remettre dans le code HTML: