Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

Default value is not being set in my SelectList in MVC4 View

Posted on 2014-04-04
3
Medium Priority
?
397 Views
Last Modified: 2014-04-14
I have a View that displays a dropdown using the following in my view:

@Html.DropDownListFor(model => model.databaseServerTypeID, (SelectList)@ViewBag.databaseServerTypeID, "-- Choose Server Type --")

Open in new window


My Controller has the following code:
BusinessLogic bl = new BusinessLogic();
SelectList slServerType = bl.CreateServerTypeSelectList(_repository, appcatalog_database.databaseServerTypeID);
ViewBag.databaseServerTypeID = slServerType;
return View(appcatalog_database);

Open in new window


The CreateServerTypeSelectList is defined as follows:
        public SelectList CreateServerTypeSelectList(IAppCatalogContainerRepository repository, int defaultServerType)
        {
            IEnumerable<AppCatalog_ServerType> db;
            db = repository.GetAllServerTypes();           

            SelectList sl;
            if (defaultServerType == 0)
                sl = new SelectList(db, "servertypeID", "servertypeName");
            else
                sl = new SelectList(db, "servertypeID", "servertypeName", defaultServerType);
            
            return sl;
        }

Open in new window


I verified after the list is created that the SelectedValue is 2 which is the same value as the databaseServerTypeID in my model.  (see attached picture)

My view has the following code for displaying the dropdown:
        <div class="editor-field">
            @Html.Label("Server Type", new { @class = "editor-label" }) :
            @Html.DropDownListFor(model => model.databaseServerTypeID, (SelectList)@ViewBag.databaseServerTypeID, "-- Choose Server Type --")
            <span class="error-msg">@Html.ValidationMessageFor(model => model.databaseServerTypeID)</span>
        </div>

Open in new window


I verified that the list in the ViewBag still has the SelectedValue set to 2 and it does (see attached picture).

I've reviewed other posts and it seems like I am doing everything correctly but I can't get the default value to be selected.  Any help is greatly appreciated!
CreateServerTypeSelectList.fw.png
CreateServerTypeSelectListinView.png
0
Comment
Question by:dyarosh
  • 2
3 Comments
 
LVL 96

Expert Comment

by:Bob Learned
ID: 39979968
I am not sure what the problem is, but I am not a big fan of the ViewBag as a viable way to pass stuff to the view.

I prefer the strong-typed ViewModel over the dynamic ViewBag.  

Here is an article that talks about the ViewModel:

Part 3: Views and ViewModels
http://www.asp.net/mvc/tutorials/mvc-music-store/mvc-music-store-part-3
0
 

Accepted Solution

by:
dyarosh earned 0 total points
ID: 39989691
I finally found the problem.  The variable that I used in the ViewBag was the same name as the field in my model.  When I changed the ViewBag variable to ViewBag.ServerTypeList, the default value is getting set.  There must have been some confusion with the names being the same.
0
 

Author Closing Comment

by:dyarosh
ID: 39998544
I had not received any help from the Experts in a while so I kept trying different things until I finally got it to work.
0

Featured Post

Visualize your virtual and backup environments

Create well-organized and polished visualizations of your virtual and backup environments when planning VMware vSphere, Microsoft Hyper-V or Veeam deployments. It helps you to gain better visibility and valuable business insights.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

The object model of .Net can be overwhelming at times – so overwhelming that quite trivial tasks often take hours of research. In this case, the task at hand was to populate the datagrid from SQL Server database in Visual Studio 2008 Windows applica…
This article describes relatively difficult and non-obvious issues that are likely to arise when creating COM class in Visual Studio and deploying it by professional MSI-authoring tools. It is assumed that the reader is already familiar with the cla…
Want to learn how to record your desktop screen without having to use an outside camera. Click on this video and learn how to use the cool google extension called "Screencastify"! Step 1: Open a new google tab Step 2: Go to the left hand upper corn…
Loops Section Overview
Suggested Courses

916 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question