I have a ViewBag.IsLocal set to true in controller. I would like to use jquery to check the ViewBag value and display an alert.
Code:
if(@ViewBag.IsLocal == true)
{
alert("yeah");
}
I never get the alert. When I use Firebug to see the value of ViewBag it's True ( with capital T). Do I have to do something like == 'True'? I tried it all and none of that worked.
Thank you for help.
H
Assuming you have set the IsLocal property to a boolean value in your controller action:
public ActionResult Index()
{
ViewBag.IsLocal = true;
return View();
}
you could do this on the view:
<script type="text/javascript">
@if(ViewBag.IsLocal)
{
<text>alert("yeah");</text>
}
</script>
And please don't use ViewBag/ViewData. Use view models and strongly typed views.
So here's a better approach that I prefer. You could JSON serialize your view model into a javascript variable and then deal with it. Like this:
@model MyViewModel
<script type="text/javascript">
var model = @Html.Raw(Json.Encode(Model));
// at this stage model is a javascript variable containing
// your server side view model so you could manipulate it as you wish
if(model.IsLocal)
{
alert("hello " + model.FirstName);
}
</script>
Obviously if you don't need your entire view model you could JSON serialize only a subset of it => only the part that will be needed by client scripts.