Reputation: 63
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
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