我正在使用Razor Pages,但我陷入了模型绑定的困境。我有一个带有标准Get和Post操作的Razor页面,但是它也有两个处理程序函数,可以通过jquery(发布ajax请求)进行访问。
我面临的问题是我有3个模型绑定到PageModel类中,但是我只想根据某些请求验证某些模型。
请在下面查看我的示例页面模型:
public class ExampleModel : PageModel
{
// Bind 3 models
[BindProperty]
public Models.Model1 Model1 { get; set; }
[BindProperty]
public Models.Model2 Model2 { get; set; }
[BindProperty]
public Models.Model3 Model3 { get; set; }
public IActionResult OnGet()
{
return Page();
}
public IActionResult OnPost()
{
// Check if Model1 is valid
if (!ModelState.IsValid)
{
//Do something here if Model1 is invalid
}
// Do something if Model1 is valid
}
public JsonResult OnPostHandler1()
{
// Check if Model2 is valid
if (!ModelState.IsValid)
{
//Do something here if Model2 is invalid
}
// Do something if Model2 is valid
}
public JsonResult OnPostHandler2()
{
// Check if Model3 is valid
if (!ModelState.IsValid)
{
//Do something here if Model3 is invalid
}
// Do something if Model3 is valid
}
}
在上面的示例中,除非所有三个模型(model1,model2和model3)都通过验证检查,否则ModelState.IsValid始终返回false。我想根据动作选择想要的型号
在标准的OnPost操作中,我只想验证model1,在OnPostHandler1中我只想验证model2,在OnPostHandler3中我只想验证model3。
如何基于调用的函数绑定模型?或者,如果我必须将它们全部绑定到类中(如上所述),如何在仅绑定的一个或多个模型上检查ModelState.IsValid?
预先感谢
马特