2017-05-08 41 views
0

无法使用预先选定的值填充dropdonwlist。使用预先选定的值处理viewbag方法。但是,当我尝试使用基于模型的方法时,我发现没有运气。无法使用预选值设置DropDownlist

public ActionResult Edit(int?id) 
{ 
    Job_ClientVM Vm = new Job_ClientVM(); 
    Vm.Job_Info = Get_jobdetails(id); 
    //4 is desired pre-selected ID value  
    Vm.Recruiters = new SelectList(db.Recruiter_Info.ToList(), "Id", 
    "Recruiter_Name",4); 
} 

这是我的看法

@Html.DropDownListFor(Model => Model.SelectedRecruiterID, Model.Recruiters, "Assign Recruiter", new { @class = "form-control" }) 

回答

1

你需要你通过模型视图之前设置的SelectedRecruiterID值在GET方法。

public ActionResult Edit(int?id) 
{ 
    Job_ClientVM Vm = new Job_ClientVM(); 
    Vm.Job_Info = Get_jobdetails(id);  
    Vm.Recruiters = new SelectList(db.Recruiter_Info.ToList(), "Id", "Recruiter_Name"); 
    // Set the value of SelectedRecruiterID 
    Vm.SelectedRecruiterID = 4; 
    // Pass the model to the view 
    return View(Vm); 
} 

注意的是,在SelectList构造函数设置所选属性(第4个参数)是没有意义的 - 它绑定到一个模型属性(内部的方法构建一个新IEnumerable<SelectListItem>并将Selected财产基础上的价值时,忽略

+0

您的解决方案正在工作,但当我试图分配Vm.SelectedRecruiterID = Vm.Job_Info.Recruiter_ID; 我面临错误无法将类型int?转换为int类型转换丢失任何关于如何前进的想法 – Arun3x3

+0

我不知道你的模型是什么或者'SelectedRecruiterID'和'Job_Info.Recruiter_ID'是什么类型,但是显然他们是不同的。没有看到你的模型最好的猜测是'Vm.SelectedRecruiterID = Vm.Job_Info.Recruiter_ID.GetValueOrDefault();' –

+0

我解决了该问题,通过改变SelectedRecruiterID到 “公众可空 SelectedRecruiterID {获取;集;}” 我想问你是否有任何关于下拉列表的良好做法的材料。谢谢 – Arun3x3