Asp.Net Core MVC使用Tag Helper向控制器传值部分字段失效如何解决
问题根因
你给Id、Name对应的<input>元素设置了disabled属性,按照HTML标准,disabled状态的表单控件的值不会被浏览器提交到服务端;而Exists对应的复选框没有加disabled属性,所以值可以正常传递,就出现了你遇到的问题。
解决方法
根据你的实际需求选择对应方案即可:
方案1:需要展示字段但不允许用户修改
把disabled属性替换为readonly属性即可:readonly状态的输入框用户无法编辑,但字段值会正常提交到后端。
修改后的输入框代码如下(顺便修正你原代码中Name输入框id重复的问题):
<input asp-for="@Model.Id" type="text" class="form-control" id="lblId" readonly>
<input asp-for="@Model.Name" type="text" class="form-control" id="lblName" readonly>
方案2:需要保持输入框禁用的UI效果
保留disabled的展示输入框,额外新增对应字段的隐藏域来传递值:
<!-- 展示用的禁用输入框 --> <input asp-for="@Model.Id" type="text" class="form-control" id="lblId" disabled> <!-- 隐藏域负责提交值 --> <input type="hidden" asp-for="@Model.Id" /> <!-- Name字段同理 --> <input asp-for="@Model.Name" type="text" class="form-control" id="lblName" disabled> <input type="hidden" asp-for="@Model.Name" />
方案3:允许用户编辑字段
直接删除Id、Name输入框的disabled属性即可。
内容的提问来源于stack exchange,提问作者ChasetopherB
相关产品推荐
相关产品推荐

