我有一个应用了验证属性的模型。验证属性是UnitInventoryItemRecipeValidationAttribute
。
应用了验证属性的模型是:
[UnitInventoryItemRecipeValidation] public class UnitInventoryItemBE : InventoryItemBaseBE { public UnitInventoryItemBE() { } }
RsiMergeUnitItemAsyncResult
类别:
public class RsiMergeUnitItemAsyncResult : RsiAsyncResult { public UnitInventoryItemBE UnitInventoryItem { get; set; } }
UnitInventoryItemRecipeValidationAttribute
public class UnitInventoryItemRecipeValidationAttribute : ValidationAttribute { protected override ValidationResult IsValid(object value, ValidationContext validationContext) { UnitInventoryItemBE unitItem = value as UnitInventoryItemBE; if (unitItem == null) { return new ValidationResult("Unit inventory item cannot be null."); } return ValidationResult.Success; } }
此验证属性在TryValidateModel
之后手动激发
[HttpPost] [ValidateAntiForgeryToken] [Authorize] public async Task<IActionResult> NewMergeUnitInventoryItem(List<UnitPropertyDifference> differences, Guid? targetId, string returnUrl) { try { if (ModelState.IsValid) { RsiMergeUnitItemAsyncResult result = await _inventoryService.NewMergeToUnitInventoryItemAsync(differences, targetId.Value); if (result.Succeeded) { TryValidateModel(result.UnitInventoryItem); } } return View("UnitPropertyDifferenceView", differences); } catch (Exception ex) { return RedirectToException(ex); } }
但在某些情况下,value
始终为空,尽管传递给TryValidateModel
的模型具有该值。我在这里附上了截图。
'
在下面的屏幕截图中,模型不是空的,但是当调用validation属性时,模型得到的值为空,如下所示。
为什么这个TryValidateModel
没有得到模型的值,尽管上面有值。在其他一些情况下,模型状态是有效的。