Asp.net mvc 4 未在视图中的@html.dropdownlistfor()中设置selectlist的选定值

Asp.net mvc 4 未在视图中的@html.dropdownlistfor()中设置selectlist的选定值,asp.net-mvc-4,Asp.net Mvc 4,控制器操作: [HttpGet] public ActionResult EditProject(int? id) { var project = _projectService.GetProjectById(id); var selectedEngagementManager = _projectService.GetEmployeeById(project.EngagementManagerId); var selectedProjectManager =

控制器操作:

[HttpGet]
public ActionResult EditProject(int? id)
 {
    var project = _projectService.GetProjectById(id);
    var selectedEngagementManager =     _projectService.GetEmployeeById(project.EngagementManagerId);

   var selectedProjectManager = _projectService.GetEmployeeById(project.ProjectManagerId);

 ViewBag.EngageMentManagers = new SelectList(_projectService.GetAllEmployee(), "EmployeeId", "EmployeeId", selectedEngagementManager.EmployeeId); 

 ViewBag.ProjectManagers = new SelectList(_projectService.GetAllEmployee(), "EmployeeId", "EmployeeId", selectedProjectManager.EmployeeId);

return View(project);
}
查看

<div class="form-group">
            @Html.Label("Project Manager", htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.DropDownListFor(model => model.ProjectManagerId, (SelectList)ViewBag.ProjectManagers, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.ProjectManagerId, "", new { @class = "text-danger" })
            </div>
        </div>
    <div class="form-group">
        @Html.LabelFor(model => model.AdditionalNotes, htmlAttributes: new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.DisplayFor(model => model.AdditionalNotes, new { htmlAttributes = new { @class = "form-control" } })
            @Html.ValidationMessageFor(model => model.AdditionalNotes, "", new { @class = "text-danger" })
        </div>
    </div>

@Label(“项目经理”,htmlAttributes:new{@class=“controllabel col-md-2”})
@DropDownListFor(model=>model.ProjectManagerId,(SelectList)ViewBag.ProjectManagers,new{htmlAttributes=new{@class=“form control”})
@Html.ValidationMessageFor(model=>model.ProjectManagerId,“,new{@class=“text danger”})
@LabelFor(model=>model.AdditionalNotes,htmlAttributes:new{@class=“controllabel col-md-2”})
@DisplayFor(model=>model.AdditionalNotes,new{htmlAttributes=new{@class=“form control”})
@Html.ValidationMessageFor(model=>model.AdditionalNotes,“,new{@class=“text danger”})

此处所选值不会显示在视图中的dropdownlist中。它只是选择dropdownlist中的最后一个值始终

放置一个断点,然后查看您在
selectedEngagementManager.EmployeeId中的值,您正在传递给SelectList类的构造函数的最后一个参数。selectedEngagementManager.EmployeeId包含正确的值。如果我们将@Html.dropdownList()而不是@Html.DropDownListFor()放入然后显示所选值获得解决方案..我刚刚更改了viewbag名称..它反映了视图中所选的值..我认为模型属性名称和viewbag名称中存在冲突,但不确定这是唯一的原因..感谢所有人的帮助,没有冲突。删除
SelectList
构造函数的最后一个参数,即
selectedProjectManager.EmployeeId
,因为绑定到属性时
DropDownListFor()
方法会忽略它。属性的值决定选择哪个选项-这就是模型绑定的工作方式。您需要在控制器中设置
ProjectManagerId
的值,如果其值与其中一个选项匹配,则将选中该值。放置一个断点,查看您在
selectedEngagementManager.EmployeeId中的值,您正在传递给SelectList类的构造函数的最后一个参数。selectedEngagementManager.EmployeeId包含正确的值。如果我们将@Html.dropdownList()而不是@Html.DropDownListFor()放入然后显示所选值获得解决方案..我刚刚更改了viewbag名称..它反映了视图中所选的值..我认为模型属性名称和viewbag名称中存在冲突,但不确定这是唯一的原因..感谢所有人的帮助,没有冲突。删除
SelectList
构造函数的最后一个参数,即
selectedProjectManager.EmployeeId
,因为绑定到属性时
DropDownListFor()
方法会忽略它。属性的值决定选择哪个选项-这就是模型绑定的工作方式。您需要在控制器中设置
ProjectManagerId
的值,如果其值与其中一个选项匹配,则将选中该值。