Your code seem ok, very likely, like @Graeme_Grant had pointed out, the code is missing "State" attribute/property from the Model. Here a quick test/example. I'm assuming PopulateLookups method is functioning, which I think it is.
1. Create a very simple class, let call it TestState
public class TestState
{
public string State { get; set; }
}
2. Pick a controller/action, in my case, I picked home/Index
public ActionResult Index()
{
PopulateLookups(db);
return View();
}
3. In the Index View, add the Model on the top and the dropdown below it
@model WebApplication4.Models.TestState
<div class="form-group">
@Html.LabelFor(m => m.State, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.DropDownListFor(m => m.State, (IEnumerable<SelectListItem>)ViewBag.state, new { @class = "form-control" })
</div>
</div>
4. Run the application, navigate to home/index, you should see the dropdownlist with State in it.
5. If #4 work that proof your current Model is missing a property, add a State property in your Model that being referenced in the view. If that still doesn't work, post more code, share the model/view//controller with us again/