У меня есть частичное представление с моделью страницы. В классе модели страницы у меня есть обработчик OnPost, который не вызывается при отправке формы.
_Subscribe.cshtml
@page
@model Shared._SubscribeModel
<div id="subscribe-for-updates">
<h4>Subscribe to keep up-to-date with any changes.</h4>
<form method="post">
<input type="email" name="email" placeholder="[email protected]" />
<input type="submit" value="Subscribe"/>
</form>
</div>
_Subscribe.cshtml.cs
public class _SubscribeModel : PageModel
{
public void OnGet()
{
}
public async Task<IActionResult> OnPostAsync(string email)
{
if (!ModelState.IsValid)
{
return Page();
}
await Task.Run(() =>
{
//do something
});
return RedirectToPage();
}
}
Теперь частичное представление отображается на домашней странице.
Index.cshtml
@page
@model IndexModel
@{
ViewData["Title"] = "Welcome";
}
<h2>Hello, Welcome to my website!</h2>
<partial name="_Subscribe" model="Model.SubscribeModel" />
Index.cshtml.cs
public class IndexModel : PageModel
{
public IndexModel()
{
SubscribeModel = new _SubscribeModel();
}
public _SubscribeModel SubscribeModel { get; }
public void OnGet()
{
}
}
Я провел небольшое исследование и обнаружил, что код, стоящий за частичными представлениями, не выполняется автоматически, как обычные страницы, что означает, что я должен явно вызывать OnPost, но это кажется неправильным.
Я делаю что-то неправильно?
Любая помощь будет оценена по достоинству.