代码之家  ›  专栏  ›  技术社区  ›  Ian Warburton

即使SupportsGet=true,查询字符串绑定在RazorPage上也不起作用

  •  1
  • Ian Warburton  · 技术社区  · 7 年前

    public class MyPage : PageModel
        {
            [BindProperty(SupportsGet = true)]
            public DateTime? StartDate { get; set; }
    
            [BindProperty(SupportsGet = true)]
            public DateTime? EndDate { get; set; }
    
            public async Task<IActionResult> OnGetAsync()
            {
                if (ModelState.IsValid)
                {
                   await Task.Delay(1);
                }
    
                return Page();
            }
        }
    

    这是查询字符串。。。

    ?开始日期=29%2F10%2F2018&结束日期=31%2F10%2F2018

    但是属性总是空的。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Mike Brind    7 年前

    模型绑定器将与格式为dd/MM/yyyy或是MM/dd/yyyy的日期值斗争,它会在放弃并默默失败之前询问自己。您应该将日期传递为yyyy-MM-dd,理想情况下:

    ?StartDate=2018-10-29&EndDate=2018-10-31

    如果无法控制日期格式,则可以自己解析这些值并将其分配给PageModel属性。