大家好,我有下拉列表的問題。我第一次將數據從數據庫綁定到 Dropdownlist 并且它工作正常。當我第二次提交表單(單擊注冊按鈕)時,它會自動返回空值。下拉列表第一次填充數據時第二次按下創建按鈕后,下拉列表為空控制器代碼:// GET method[HttpGet][Authorize]public IActionResult Register(string returnUrl = null){ ViewData["RoleId"] = new SelectList(_MedicalCenterOrdinanceContext.AspNetRoles,"Id","Name"); return View();}// POST method[HttpPost][Authorize][ValidateAntiForgeryToken]public async Task<IActionResult> Register([Bind("Username,NameAndTitle,Password,RoleId")] RegisterViewModel model, string returnUrl = null){ ViewData["ReturnUrl"] = returnUrl; if (ModelState.IsValid) { var user = new ApplicationUser { UserName = model.Username, NameAndTitle = model.NameAndTitle, }; var result = await _userManager.CreateAsync(user, model.Password); if (result.Succeeded) { var role = _userRoles.GetRole(model.RoleId); var userAddedToRole = await _userManager.AddToRoleAsync(user, role.Name); if (userAddedToRole.Succeeded) { _logger.LogInformation("User created a new account with password."); TempData["RegisterUserPassed"] = "Succesfully created account"; } } else { model.InvalidCredentials = "This Username already exist !"; TempData["RegisterUserFailed"] = "This Username already exist"; } } // Redisplay form ModelState.Clear(); return View();}查看代碼:<div class="input-group"> <span class="input-group-addon"><i class="glyphicon glyphicon-book"></i></span> <select asp-for="RoleId" class="form-control" asp-items="@ViewBag.RoleId"></select></div><br /><button type="submit" class="col-lg-12 col-md-12 col-sm-12 col-xs-12 btn btn-lg btn-primary">Create</button><h4 hidden class="col-lg-12 col-md-12 col-sm-12 col-xs-12 text-danger " text-danger">@Html.DisplayFor(model => model.InvalidCredentials)</h4></form></div>
1 回答

紅顏莎娜
TA貢獻1842條經驗 獲得超13個贊
因為POST當你在服務器上重新生成表單時return View();
[HttpPost]在返回視圖之前,您還需要重新填充操作中的下拉列表。
即這一行
ViewData["RoleId"] = new SelectList(_MedicalCenterOrdinanceContext.AspNetRoles,"Id","Name");
嘗試在 HttpPost 方法中返回 View 之前添加此行。像這樣 -
....
ViewData["RoleId"] = new SelectList(_MedicalCenterOrdinanceContext.AspNetRoles,"Id","Name");
// Redisplay form
ModelState.Clear();
return View();
此外,如果您希望在執行創建方法后恢復數據,您必須將模型傳回視圖。
ViewData["RoleId"] = new SelectList(_MedicalCenterOrdinanceContext.AspNetRoles,"Id","Name");
// Redisplay form
ModelState.Clear();
return View(model); // HERE
- 1 回答
- 0 關注
- 302 瀏覽
添加回答
舉報
0/150
提交
取消