Я пытаюсь реализовать ViewComponent, который включает в себя форму с кнопкой отправки. После нажатия кнопки форма отправляется, и запись добавляется в базу данных вместе с возвратом сообщения об успехе. Все это делается асинхронно, поэтому я просто возвращаю статус текущей просматриваемой бритвенной страницы.
Я хочу встроить эту форму / функциональность во многие страницы моего приложения, поэтому я смотрю на ViewComponent. Я не хочу реализовывать одну и ту же функциональность OnPost для каждой страницы Razor, к которой я добавляю эту форму.
Если это имеет смысл?
Вот как я показываю форму на странице бритвы.
@await Component.InvokeAsync("QuoteForm", new Models.Quote())
Вот мой простой метод вызова.
//Show a ViewComponent with form
public IViewComponentResult Invoke()
{
Quote quote = new Quote();
//Return View with ViewModel from below.
return View("QuoteFormView", quote);
}
Могу ли я сделать что-то подобное с ViewComponent?
public async Task<IViewComponentResult> OnPostAsync(Quote quote)
{
//Model did not pass validation.
if (!ModelState.IsValid)
{
//Do Something
}
else
{
//Do database work and send email
//return status to view.
return Content("Database updated and Email Sent.");
}
}