ASP.NET Core 2 Razor页面/实体框架 - 在帖子

时间:2018-05-17 09:53:00

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

我是Razor Pages的新用户,我正在尝试了解如何在页面的OnPostAsync方法中设置必填字段。具体来说,我有一个绑定对象,需要包含当前用户的ID(来自ASP.NET标识)。我可以在OnPostAsync中设置此值,但ModelState仍显示为无效。检查返回的错误,似乎没有考虑更新的值

这是我当前的OnPostAsync方法:

public async Task<IActionResult> OnPostAsync()
{
    Upload.Created = DateTime.Now;
    Upload.UploaderID = _userManager.GetUserId(User);

    if (!ModelState.IsValid)
    {
        return Page();
    }

    _context.Uploads.Add(Upload);
    await _context.SaveChangesAsync();

    return RedirectToPage("./Index");
}

这是Upload模型的摘录:

public class Upload
{
    ...

    [Required]
    public String UploaderID { get; set; }

    [ForeignKey("UploaderID")]
    public ApplicationUser Uploader { get; set; }

    ...
}

道歉,如果有一些显而易见的东西我在这里失踪,正如我所说,我是Razor Pages / Entity Framework的新手,我的Google-fu已经让我失望了。

1 个答案:

答案 0 :(得分:0)

我在设置UploaderID之后但在ModelState检查之前添加以下行解决了问题:

ModelState.Remove("Upload.UploaderID");

这样可以阻止UploaderID检查其余ModelState的错误。