Dans Mvc 3 rasoir vue quelle est la meilleure façon conditionnelle, de rendu html basé sur les valeurs Null dans le modèle
C'est j'en suis sûr, une question facile, mais j'ai du mal à comprendre cela.
Je veux faire quelque chose comme cela....
@(string.IsNullOrEmpty(Model.CustomerUrl) ? "" : <a href="@Model.CustomerUrl">Click me</a>)
Ce morceau de code ne fonctionne pas.
Le mélange de html avec le rasoir de la syntaxe et de l'inclusion de citations dans les attributs des balises, il est difficile de comprendre.
J'aime rasoir à l'exception de comprendre ce genre de choses est vraiment déclenchement de moi.
J'aimerais juste pas le rendu de la suivantes si la CustomerUrl a la valeur null ou vide...
<p class="customerLink links"><a href="@Model.CustomerUrl">@Model.CustomerName</a></p>
MODIFIER
Cela ne fonctionne toujours pas pour moi...merci pour la suggestion.
Mon problème est que le code ci-dessus est DÉJÀ dans un Rasoir Bloc de Code. Voici mon code que je ne peux pas comprendre...
MODIFIER le NUMÉRO DEUX, LE code suivant fonctionne maintenant
@if (Model.Count() > 0)
{
foreach (var partner in Model)
{
<li>
@Html.ActionLink(@partner.CustomerName, "Details", "Customer", new { id = Customer.AID }, null)<br />
@partner.Street<br />
//this is what i cannot figure out!!
@if(!string.IsNullOrEmpty(partner.Phone))
{
@partner.Phone@:<br />
}
@partner.Distance<br />
</li>
}
}
J'précédé le sous-bloc (si) avec le symbole@. Puis le balisage
j'ai eu à délimiter avec @: Puis il a travaillé.
Il me semble hier quand j'ai essayé d'utiliser un imbriquée rasoir bloc de code j'ai une erreur de compilation, CAR je l'a précédé d'un @. Alors maintenant, je suis encore plus confus que jamais.
En fait...si j'ai essayé d'entourer mon [email protected]éléphone avec des citations comme ça... "@partner.Phone"@:</br>
je reçois une autre erreur du compilateur. Le rasoir est grande quand elle fonctionne, mais quand ça ne marche pas c'est très confus.
Seth
OriginalL'auteur Seth Spearman | 2012-05-04
Vous devez vous connecter pour publier un commentaire.
Ne pas le faire en ligne si.
'Nuff Said
Je suis juste de voir cela maintenant, des mois plus tard. Cela fonctionne à l'intérieur d'un rasoir bloc de code. Il suffit de retirer le " @ " dans l'instruction if.
Je ne suis pas vraiment sûr de savoir si vous êtes suggérant de ne pas utiliser le code que vous avez montré et vous êtes à la critiquer comme étant un "inline si" ou si vous êtes suggérant que le code que vous avez montré, c'est effectivement la bonne façon de le faire... et le "inline si" est quelque part d'autre
Vous pouvez utiliser le code indiqué. L'original inline si l'OP a suggéré de ne pas travailler. Une ligne si est l' (bool?true:false) de la syntaxe. Ce que je ne faisait qu'exprimer ici, c'est que le 'si' instruction de bloc, j'ai présenté peut travailler à l'intérieur d'un autre bloc de code aussi longtemps que vous retirez le précédent symbole @ devant le si.
OriginalL'auteur Thinking Sites
Sans doute avant cette ligne, il avait d'affichage html, donc, pour désigner de rasoir vous êtes à l'aide de code, vous devez le symbole@.
Vous êtes à l'intérieur d'un bloc de code déjà, de sorte que le symbole @ ne fonctionne pas ici.
À l'aide d'une balise html, rasoir se rend compte que vous êtes l'affichage HTML de nouveau. Tout le contenu ici est supposé être le HTML. Si vous voulez dire le Rasoir vous disposez d'un code à l'intérieur ici, vous devez utiliser le symbole @ pour indiquer le code.
C'est correct parce que vous avez besoin de dire de Rasoir vous utilisez à nouveau le code. Remarque s'il s'était directement au-DESSUS de votre liste de balises, vous ne pouvez pas utiliser le symbole @ ici, parce que vous n'avez pas utiliser le symbole @ lorsque vous êtes déjà dans le code.
"@partenaire.Téléphone" ne fonctionne pas pour la même raison
ne fonctionnerait pas en C#. Vous êtes en train de créer un objet dans le code sans l'utiliser.
Espoir qui aide à expliquer.
OriginalL'auteur DMulligan
L'une des suggestions que vous trouverez sur l'Internet en ce qui concerne conditionnelle de sortie et des point de Vue est que les deux ne doivent pas être mélangés ensemble. Si il ya quelque chose que vous avez besoin pour afficher basée sur une condition, alors vous devriez créer un Helper HTML. Toutefois, afin de répondre à votre question ce que vous pourriez faire (si vous ne voulez pas vous embêter avec un helper) est quelque chose comme ceci:
OriginalL'auteur Husein Roncevic