ASP.NET Core 2 Razor Pages / Entity Framework - Установите обязательное поле для публикации - PullRequest
0 голосов
/ 17 мая 2018

Я новичок в Razor Pages и пытаюсь понять, как установить обязательное поле в методе OnPostAsync страницы. В частности, у меня есть связанный объект, который должен включать в себя идентификатор текущего пользователя (из ASP.NET Identity). Я могу установить это значение в 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-фу подвело меня.

1 Ответ

0 голосов
/ 18 мая 2018

Я решил проблему, добавив следующую строку после установки UploaderID, но перед проверкой ModelState:

ModelState.Remove("Upload.UploaderID");

Это останавливает проверку UploaderID на наличие ошибок с остальной частью ModelState.

...