Viewbag check to see if item exists and write out html and value error

77,578

Solution 1

Don't use Response.Write. Instead do this:

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

Solution 2

May be useful to some one who need to check NULL as well data type of 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>
           }
Share:
77,578
Dietpixel
Author by

Dietpixel

Updated on October 06, 2020

Comments

  • Dietpixel
    Dietpixel almost 4 years

    I'm using razor syntax and I want to check to see if certain ViewBag values are set before I spit out the html. If a value is set then I want to write it out. If not I want it to do nothing.

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

    This doesn't appear to be working correctly. The code shows up on top of another h2 I have above the code above. I have two register controller methods. One is the get and the other accepts the post. If the user exists I am setting a ViewBag item that needs to be displayed to the user.

    Thanks

  • dav_i
    dav_i about 11 years
    Another option would be to use @Html.Raw("<h3>" + ViewBag.UserExists + "</h3>") as I believe the above will not render as desired if ViewBag.UserExists contains any HTML.
  • Admin
    Admin almost 11 years
    I noticed this, and I had a error and realized since I was inside a form , I need to drop the "@" if (ViewBag.IsValid != null) {
  • kingdango
    kingdango over 10 years
    Don't use Html.Raw unless you EXPECT there to be safe HTML, otherwise you are exposing yourself to exploitation. If you are new to Razor one good rule of thumb is if you are writing Response.Write("...") then you're doing it wrong.