I have a stored procedure that retrieves existing data from the database and I want to set my DropDownListFor
to a value that is equal to the data from the stored procedure's result. This is for an edit module.
Here is my code for my controller:
[HttpPost]
public ActionResult EditGetProjDetails(int id)
{
var vm = new ProjectsViewModel();
sp_GetProjectDetails_Result result = db_RIRO.sp_GetProjectDetails(id).FirstOrDefault();
vm.BusinessLineList = db_RIRO.sp_GetAllBusinessLine()
.Select(a => new SelectListItem
{
Value = a.BusinessLineID.ToString(),
Text = a.BusinessLine,
Selected = // what code do i put here?
})
.ToList();
vm.ProjectID = result.ProjectID;
vm.BusinessUnit = result.BusinessUnit;
return PartialView("~/Views/Project/_EditProjDetails.cshtml", vm);
This is my View:
@Html.DropDownListFor(a => a.BusinessLineID, Model.BusinessLineList, new { @class = "form-control input-sm", placeholder = "Business Line", required = "required", autocomplete = "off" })
and here is my ViewModel:
public int BusinessLineID { get; set; }
public List<SelectListItem> BusinessLineList { get; set; }
public string BusinessLine { get; set; }
Solution:
var vm = new ProjectsViewModel()
{
BusinessLineID = 2
};
sp_GetProjectDetails_Result result = db_RIRO.sp_GetProjectDetails(id).FirstOrDefault();
vm.BusinessLineList = db_RIRO.sp_GetAllBusinessLine()
.Select(a => new SelectListItem
{
Value = a.BusinessLineID.ToString(),
Text = a.BusinessLine
})
.ToList();
return PartialView("~/Views/Project/_EditProjDetails.cshtml", vm);