Solved

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

Posted on 2014-04-04
3
389 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

Master Your Team's Linux and Cloud Stack

Come see why top tech companies like Mailchimp and Media Temple use Linux Academy to build their employee training programs.

Question has a verified solution.

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

Summary Displaying images in RichTextBox is a common requirement with limited solutions available. Pasting through clipboard or embedding into RTF content only support static images.  This article describes how to insert Windows control objects int…
Today I had a very interesting conundrum that had to get solved quickly. Needless to say, it wasn't resolved quickly because when we needed it we were very rushed, but as soon as the conference call was over and I took a step back I saw the correct …
With Secure Portal Encryption, the recipient is sent a link to their email address directing them to the email laundry delivery page. From there, the recipient will be required to enter a user name and password to enter the page. Once the recipient …
The Email Laundry PDF encryption service allows companies to send confidential encrypted  emails to anybody. The PDF document can also contain attachments that are embedded in the encrypted PDF. The password is randomly generated by The Email Laundr…

803 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