亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

當提交按鈕 POST 時,asp.net core mvc 下拉列表設置為 null

當提交按鈕 POST 時,asp.net core mvc 下拉列表設置為 null

C#
慕娘9325324 2021-10-09 16:49:27
大家好,我有下拉列表的問題。我第一次將數據從數據庫綁定到 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


查看完整回答
反對 回復 2021-10-09
  • 1 回答
  • 0 關注
  • 302 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號