web-dev-qa-db-fra.com

Viewbag vérifie si l'élément existe et écrit le code HTML et l'erreur de valeur

J'utilise la syntaxe razor et je veux vérifier si certaines valeurs de ViewBag sont définies avant de cracher le code HTML. Si une valeur est définie, je veux l'écrire. Sinon, je ne veux rien faire.

@if (ViewBag.UserExists != null) 
   { Response.Write(String.Format("<h3>{0}</h3>", ViewBag.UserExists)); }

Cela ne semble pas fonctionner correctement. Le code apparaît au-dessus d'un autre h2 que j'ai au-dessus du code ci-dessus. J'ai deux méthodes de contrôleur de registre. L'un est le get et l'autre accepte le post. Si l'utilisateur existe, je configure un élément ViewBag qui doit être affiché à l'utilisateur.

Merci

35
Dietpixel

N'utilisez pas Response.Write. Au lieu de cela, faites ceci:

@if (ViewBag.UserExists != null)
{
    <h3>@ViewBag.UserExists</h3>
}
91
lahsrah

Peut être utile à quelqu'un qui doit vérifier NULL ainsi que le type de données de ViewBag

if (ViewBag.MyBag != null & ViewBag.MyBag is string) //int or Foo or anyObject
            {
                <div class="row">
                    <br />
                    <div class="alert alert-danger col-sm-offset-2 col-md-8">
                        @ViewBag.MyBag
                    </div>
                </div>
           }
1
Vijai

Le code pourrait être encore simplifié pour:

<h3>
   @(ViewBag.UserExists??"USER DOES NOT EXIST")
</h3>
0
Nishanth Shaan