ASP.NET MVC Razor视图下拉框提交后保持选中状态问题求助
问题解决步骤
1. 修正表单参数名不匹配问题
视图里<select>的name属性要和POST方法的参数名一致,否则提交后无法正确传递选中的餐桌值:
<select name="tafel" class="form-control"> <!-- option代码后续调整 --> </select>
2. 修复RedirectToAction参数传递错误
POST方法里的RedirectToAction参数传递逻辑有误,需要用匿名对象明确指定路由参数:
[HttpPost] public IActionResult RekeningLaden(string tafel) { return RedirectToAction(nameof(Rekeningen), new { geselecteerdeTafel = tafel }); }
3. 解决RZ1031错误与选中状态不生效问题
提供两种可行方案:
方案一:使用Html.DropDownList辅助方法(推荐)
替代手动foreach生成option,通过辅助方法自动绑定枚举并设置选中值,完美规避标签助手冲突:
<form asp-action="RekeningLaden" method="post"> @Html.DropDownList("tafel", new SelectList(ViewBag.Tafels, ViewBag.geselecteerdeTafel), new { @class = "form-control" }) <input type="submit" value="Rekening toevoegen" /> </form>
SelectList第二个参数直接传入ViewBag.geselecteerdeTafel,自动设置默认选中项- 第一个参数
"tafel"对应表单提交的参数名,和POST方法参数保持一致
方案二:局部禁用option标签助手
如果坚持手动生成option,可在单个option标签上添加asp-disable-taghelper属性,仅禁用当前标签的标签助手,不影响页面其他asp功能:
<form asp-action="RekeningLaden" method="post"> <select name="tafel" class="form-control"> @foreach (var tafel in ViewBag.Tafels) { <option value="@tafel" asp-disable-taghelper="true" @(tafel.ToString() == ViewBag.geselecteerdeTafel ? "selected" : "")> @tafel </option> } </select> <input type="submit" value="Rekening toevoegen" /> </form>
内容的提问来源于stack exchange,提问作者Dominic smet
相关产品推荐
相关产品推荐

