ASP.NET Core表单提交MERSISNumber(long)始终为0问题排查
问题原因及修复方案
核心问题分析
模型绑定不匹配
第一个输入框手动设置了name="mersis",但你的视图模型CompanyCreateVM中对应的属性名为MERSISNumber。ASP.NET MVC的模型绑定依赖表单元素的name属性与模型属性名完全匹配,两者名称不一致时,无法将输入值绑定到MERSISNumber,而long类型的默认值为0,因此后端接收到的该参数始终是0。重复ID违反HTML规范
两个输入框都设置了id="taxNumber",ID在DOM中必须唯一,这会导致DOM操作异常,同时也干扰了asp-for的自动生成逻辑。手动指定name覆盖了自动绑定
asp-for="@Model.MERSISNumber"会自动生成与属性名一致的name和id属性,手动指定name="mersis"直接破坏了框架的自动绑定机制。
修复代码
修改两个输入框的代码,移除手动指定的id和name,让asp-for自动生成正确的属性:
<div class="mb-3 col-md-6"> <label asp-for="@Model.MERSISNumber" class="form-label">MERSIS Numarası</label> <input class="form-control" type="text" asp-for="@Model.MERSISNumber" placeholder="MERSIS Numarası" /> </div> <div class="mb-3 col-md-6"> <label asp-for="@Model.TaxNumber" class="form-label">Vergi Numarası</label> <input class="form-control" type="text" asp-for="@Model.TaxNumber" placeholder="Vergi Numarası" /> </div>
修改后,asp-for会自动生成符合模型绑定要求的name和唯一的id,确保输入值能正确传递到后端的CompanyCreateVM参数中。
内容的提问来源于stack exchange,提问作者Dilara PINAR
相关产品推荐
相关产品推荐

