Razor Pages隐藏字段值绑定到后端字段失败问题求助
问题原因及解决方案
你遇到的核心问题是:表单序列化只会收集表单元素的value属性值,而你的代码错误地修改了隐藏字段的ariaValueText属性,导致后端无法接收到数据。
修复步骤
1. 修改JavaScript赋值逻辑
把原本修改ariaValueText的代码,改成修改隐藏字段的value属性:
<script type="text/javascript"> $(function () { $('#submit').on('click', function (evt) { const avoid = document.getElementById("avoidContainer"); const avoidInput = document.getElementById("AvoidPseudoList"); // 先清空旧值,避免重复提交时累加 avoidInput.value = ''; for(const child of avoid.children) { console.log(child); avoidInput.value += " " + child.innerHTML; } // 可选:去除首尾多余空格 avoidInput.value = avoidInput.value.trim(); evt.preventDefault(); $.post('', $('form').serialize(), function () { }); }); }); </script>
2. 保留隐藏字段的原有结构
你的隐藏字段代码无需改动,asp-for会正确生成对应name属性,确保后端绑定:
<input id="AvoidPseudoList" type="hidden" aria-valuetext="" asp-for="AvoidPseudoList" >
3. 后端代码保持不变
[BindProperty] public string AvoidPseudoList{get;set;}
验证逻辑
修改后,当你点击提交按钮时,JavaScript会把选中的用户值赋值给隐藏字段的value属性,表单序列化时会包含这个值,后端的AvoidPseudoList就能正确接收到数据了。
内容的提问来源于stack exchange,提问作者SpicyRiceTea
相关产品推荐
相关产品推荐

