ModelState.Isvalid,为什么要验证相关表?

ModelState.Isvalid, why does it validate relatetd Tabels?

这是要验证的属性。 (代码来自我的cshtml.cs(Razor))

    [BindProperty]
    public TMedProductStorageLocation TMedProductStorageLocation { get; set; }
    [BindProperty]
    public IList<TStorageLocation> TStorageLocations { get; set; }
    [BindProperty]
    public int SelectedStorageLocationId { get; set; }
    [BindProperty]
    public TMedProduct SelectedProduct { get; set; }

    [BindProperty]
    public int RelocateAmount { get; set; }

这些是我要验证的属性。但它也验证:

  public class TSubstanceGroup
{

    public TSubstanceGroup()

    {
        TMedProducts = new HashSet<TMedProduct>();

    }
    [Key]
    public int Id { get; set; }

    [Required(ErrorMessage = "Geben Sie eine Bezeichnung ein.")]

    public string Name { get; set; }

    public ICollection<TMedProduct> TMedProducts { get; set; }
}

因为这是 table 与 TMedProduct 相关的。 如何避免对相关 table 进行验证?

不确定你的 razor 页面设计是什么,但你需要知道 ModelState 将验证你在 razor 页面后端定义的所有模型,而不是因为你在模型之间有关系:

public class PrivacyModel : PageModel
{
    [BindProperty]
    public TSubstanceGroup TSubstanceGroup { get; set; }
    [BindProperty]
    public TMedProduct SelectedProduct { get; set; }
    [BindProperty]
    public TMedProductStorageLocation TMedProductStorageLocation { get; set; }
    [BindProperty]
    public IList<TStorageLocation> TStorageLocations { get; set; }
    [BindProperty]
    public int SelectedStorageLocationId { get; set; }
    [BindProperty]
    public int RelocateAmount { get; set; }
    public IActionResult OnPost()
    {
       //...
    }

    public void OnGet()
    {
        //..
    }
    
}

为避免对相关表进行验证,您可以使用以下键删除验证:

public IActionResult OnPost()
{
    ModelState.Remove("KeyName");
    if(ModelState.IsValid)
    {
        //...
    }
    return Page();
}

如何知道键名,可以查看ModelState: