问题:
- 下拉框的值如何和ViewModel的集合进行绑定
- 绑定后的值Controller如何获取
ViewModel:
public class FactoryEditViewModel { /// <summary> /// 用于修改保存 /// </summary> public GM.Factory Factory { get; set; } /// <summary> /// 用于页面企业下拉框 /// </summary> public IEnumerable<SelectListItem> EnterpriseList { get; set; } }
Controller: get是页面加载时用的,POST是前端提交过来时调用的。
[HttpGet] public IActionResult Create() { EnterpriseBLL enterpriseBLL = new EnterpriseBLL(); IList<GM.Enterprise> liEnterprise = enterpriseBLL.GetAllEnterprise(); List<SelectListItem> li = new List<SelectListItem>(); foreach(GM.Enterprise item in liEnterprise) { SelectListItem listItem = new SelectListItem(); listItem.Text = item.Name; listItem.Value = item.Code; li.Add(listItem); } FactoryEditViewModel factoryEditViewModel = new FactoryEditViewModel(); factoryEditViewModel.EnterpriseList = li; return View("FactoryCreate",factoryEditViewModel); } [HttpPost] public IActionResult Create(FactoryEditViewModel factoryEditViewModel) { try { FactoryBLL factoryBLL = new FactoryBLL(); factoryBLL.SaveFactory(factoryEditViewModel.Factory); ViewData["Message"] = factoryEditViewModel.Factory.Code + "保存成功"; return RedirectToAction("Create"); } catch (Exception ex) { throw ex; } }
前端页面:
<table width="70%" border="1" cellpadding="0" cellspacing="0"> <tr> <td class="tdleft" width="100"> 编码: </td> <td> <input asp-for="Factory.Code" style="width:350px" /> </td> </tr> <tr> <td class="tdleft">名称:</td> <td><input asp-for="Factory.Name" style="width:350px" /></td> </tr> <tr> <td class="tdleft">企业:</td> <td> @Html.DropDownList("Factory.EnterpriseCode",Model.EnterpriseList) </td> </tr> <tr> <td colspan="2" align="center"> <input id="btnSave" type="submit" value="保 存" onclick="return check()" /> <input id="btnBack" onclick="javascript:GoBack();" type="button" value="返 回" /> </td> </tr> <tr> <td colspan="2"> <font size="2" color="green">@ViewData["Message"]</font> </td> </tr> </table>
注意:前端页面 Factory.EnterpriseCode 需和ViewModel里的属性一致。且再修改时只要给 Factory赋好值,对应的EnterpriseCode会自动选中。