post 处理程序上的部分页面模型未执行 | ASP.NET 核心剃刀页面 2.0
partial page model on post handler is not executing | ASP.NET Core Razor Pages 2.0
我有一个页面模型的局部视图。在页面模型中 class 我有 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="yourname@example.com" />
<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 但这似乎是错误的。
我是不是做错了什么?
如有任何帮助,我们将不胜感激。
分部视图不应有 PageModel 文件。它们本质上是呈现到调用页面并成为其中一部分的小部件。您的 OnPostAsync 方法应该添加到调用页面的 PageModel class。
我有一个页面模型的局部视图。在页面模型中 class 我有 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="yourname@example.com" />
<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 但这似乎是错误的。
我是不是做错了什么?
如有任何帮助,我们将不胜感激。
分部视图不应有 PageModel 文件。它们本质上是呈现到调用页面并成为其中一部分的小部件。您的 OnPostAsync 方法应该添加到调用页面的 PageModel class。