表单验证失败后PurchaseOrderNumber丢失,修复后验证消息无法正常显示求助
采购订单编号字段验证消息不显示问题排查
采购订单编号(PurchaseOrderNumber)由外部函数生成,创建采购订单时自动填充至对应字段。但表单提交因验证错误失败时,该编号会从字段中消失,页面刷新后还会生成新的编号。
原代码实现
原表单字段代码
<div class="form-group col-md-4"> @Html.LabelFor(model => model.PurchaseOrderSingle.PurchaseOrderNumber) <input asp-for="PurchaseOrderSingle.PurchaseOrderNumber" class="form-control" value="@ViewData["PONumber"]" readonly="readonly" /> @Html.ValidationMessageFor(model => model.PurchaseOrderSingle.PurchaseOrderNumber, "", new { @class = "text-danger" }) </div>
原控制器Create方法代码
ViewData["ShippingMeth"] = new SelectList(shippingMethods, "ShippingMethodId", "ShippingMethodName"); _PurchaseOrderDb.PurchaseOrderSingle = new PurchaseOrder(); ViewData["PONumber"] = await NewOrderNumber(false); return View();
修改后的代码实现
为解决字段值丢失问题,将表单代码修改为绑定Model属性:
修改后的表单字段代码
<div class="form-group col-md-4"> @Html.LabelFor(model => model.PurchaseOrderSingle.PurchaseOrderNumber) <input asp-for="PurchaseOrderSingle.PurchaseOrderNumber" class="form-control" value="@Model.PurchaseOrderSingle.PurchaseOrderNumber" readonly="readonly" /> @Html.ValidationMessageFor(model => model.PurchaseOrderSingle.PurchaseOrderNumber, "", new { @class = "text-danger" }) </div>
同时更新控制器代码,返回包含PurchaseOrderNumber的ViewModel:
修改后的控制器Create方法代码
ViewData["ShippingMeth"] = new SelectList(shippingMethods, "ShippingMethodId", "ShippingMethodName"); _PurchaseOrderDb.PurchaseOrderSingle = new PurchaseOrder(); var poNumber = await NewOrderNumber(false); //ViewData["PONumber"] = poNumber; var model = new PurchaseOrderViewModel { PurchaseOrderSingle = new PurchaseOrder { PurchaseOrderNumber = poNumber }, }; return View(model);
当前问题
现在PurchaseOrderNumber能正确显示,但模型验证消息无法正常显示,恳请帮忙排查原因及解决方法。
内容的提问来源于stack exchange,提问作者Rashmika
相关产品推荐
相关产品推荐

