ASP.NET Core 忽略属性或将其设置为在 ModelState 上有效

Jac*_*kal 1 c# validation asp.net-core

我在控制器上有这 2 个操作

\n\n
[HttpPost]\n    [ValidateAntiForgeryToken]\n    public IActionResult AddComDefeito(PecaRegisto pecaRegisto)\n    {\n        if (!ModelState.IsValid)\n        {\n            return PartialView("_AddComDefeitoPartial", pecaRegisto);\n        }\n\n        return PartialView("_AddComDefeitoPartial", new PecaRegisto());\n    }\n\n    [HttpPost]\n    [ValidateAntiForgeryToken]\n    public IActionResult AddSemDefeito(PecaRegisto pecaRegisto)\n    {\n        if (!ModelState.IsValid)\n        {\n            return PartialView("_AddSemDefeitoPartial", pecaRegisto);\n        }\n\n        return PartialView("_AddSemDefeitoPartial", new PecaRegisto());\n    }\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是模型

\n\n
public class PecaRegisto\n{\n    public int Id { get; set; }\n\n    [Required]\n    [Range(1, int.MaxValue)]\n    public int Quantidade { get; set; }\n    [Required]\n    [Display(Name = "Refer\xc3\xaancia")]\n    public int ReferenciaId { get; set; }\n    public Referencia Referencia { get; set; }\n\n    [Required]\n    [Display(Name = "Defeito")]\n    public int? DefeitoCodigoId { get; set; }\n    public DefeitoCodigo DefeitoCodigo { get; set; }\n\n    public int ProducaoRegistoId { get; set; }\n    public ProducaoRegisto ProducaoRegisto { get; set; }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

在我的一项行动中,该财产

\n\n
DefeitoCodigoId\n
Run Code Online (Sandbox Code Playgroud)\n\n

不需要,我什至不渲染它的部分。但是,在检查模型状态时验证失败。

\n\n

所以我这里唯一的选择是。

\n\n

自动设置该属性在操作中有效,或者删除必需属性并使该属性在代码的其他操作中必需。

\n\n

我宁愿将属性设置为有效,因为它是可选的外键。

\n\n

我该怎么做呢?

\n

Nem*_*vic 6

你尝试使用过吗ModelState.Remove("DefeitoCodigoId")