我有一个表单,其中一个下拉列表处于禁用状态,如下所示:
<div class="form-group">
<label asp-for="ItemEditModel.ProjectJobId" class="form-label required"></label>
<div class="form-group">
<select class="form-control" asp-for="ItemEditModel.ProjectJobId"
asp-items="Model.ProjectJobList" disabled></select>
</div>
<span class="text-danger" asp-validation-for="ItemEditModel.ProjectJobId"></span>
</div>
现在,当我们提交表单时,该字段的值不会出现,因为它处于禁用状态
当我们提交表格时,我该如何获得这些字段的值?
使用只读属性而不是禁用
您可以尝试使用路由参数:
<form method="post" asp-route-ItemEditModel.ProjectJobId=@Model.ItemEditModel.ProjectJobId>
...
</form>
或者,您可以尝试在提交表单之前删除disabled
:
<form id="myForm" method="post">
<div class="form-group">
<label asp-for="ItemEditModel.ProjectJobId" class="form-label required"></label>
<div class="form-group">
<select class="form-control" asp-for="ItemEditModel.ProjectJobId"
asp-items="Model.ProjectJobList" disabled></select>
</div>
<span class="text-danger" asp-validation-for="ItemEditModel.ProjectJobId"></span>
</div>
<input type="submit" value="submit"/>
</form>
<script>
$('#myForm').submit(function () {
$("#ItemEditModel_ProjectJobId").removeAttr("disabled");
return true; // return false to cancel form action
});
</script>
或者您可以添加一个隐藏的输入来绑定ItemEditModel.ProjectJobId
:
<form method="post">
<input hidden asp-for="ItemEditModel.ProjectJobId" />
...
</form>