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:
这是要验证的属性。 (代码来自我的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: