剃刀页面中的选择性绑定模型

时间:2020-01-31 10:33:46

标签: asp.net-core entity-framework-core razor-pages

我正在使用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?

预先感谢

马特

0 个答案:

没有答案