silver01
silver01

Reputation: 63

MVC set default value in Razor DropdownlistFor that is bind to database

Problem is, how do i set the default value for the dropdownlistfor in razor view that is bind with model/database?

model:

public class Cvm
{
    public TCl Cl { get; set; }
    public List<Purpose> ListPurpose { get; set; }

controller:

public ActionResult Create()
{
    Cvm cvms = new Cvm();
    var purposes = db.Purposes.ToList();
    cvms.ListPurpose = purposes;
    return View(cvms);
}

View

@{
  List<SelectListItem> listItems = new List<SelectListItem>();
  foreach (var item in Model.ListPurpose)
  {
    listItems.Add(new SelectListItem
    {
      Text = item.PurposeDesc
    });
  }
}
<div class="col-md-4">
  <div class="form-group">
    @Html.LabelFor(model => model.Clearance.Purpose, htmlAttributes: new { @class = "control-label" })
    <br>
    @Html.DropDownListFor(model => model.Clearance.Purpose, new SelectList(Model.ListPurpose, "Id", "PurposeDesc"), "Prime Purpose", new { @class = "form-control", Selected = true })
    @Html.ValidationMessageFor(model => model.Clearance.Purpose, "", new { @class = "text-danger" })
  </div>
</div>

That is how I populate the dropdownlistfor with the data from database now, when the page loads, the dropdown is populated, also the dropdown has a value of "Prime Purpose".

When I save the form, what saves in the database is NULL in the purpose column it seems it ignores the loaded default value

Upvotes: 0

Views: 761

Answers (1)

silver01
silver01

Reputation: 63

i've solved my problem using

string defaultPupose = "LOCAL EMPLOYMENT";
Selected = item.PurposeDesc == defaultPupose ? true : false

full code is

@{
                    List<SelectListItem> listItems = new List<SelectListItem>();
                    string defaultPupose = "LOCAL EMPLOYMENT";
                    foreach (var item in Model.ListPurpose)
                    {
                        listItems.Add(new SelectListItem
                        {
                            Text = item.PurposeDesc,
                            Selected = item.PurposeDesc == defaultPupose ? true : false
                        });
                    }
                }

Upvotes: 0

Related Questions