我正在创建一个简单的登录表单。单击按钮后,将触发此函数:
public async Task<IActionResult> OnPostButton_Login(IFormCollection data)
{
var emailAddress = Request.Form["emailaddress"];
var pass = Request.Form["password"];
if (String.IsNullOrEmpty(emailAddress)) return Page();
if (String.IsNullOrEmpty(pass)) return Page();
await GetUser(emailAddress , pass);
return Page();
}
如果用户没有在电子邮件或密码下键入任何内容,页面将重新加载-但也会清除所有输入。
我怎样才能从这个函数返回而不改变任何东西(并且只返回一个alert?)
1条答案
按热度按时间wmtdaxz31#
我怎样才能从这个函数返回而不改变任何东西(并且只返回一个alert?)
将
[BindProperty]
属性添加到要重新加载到返回页面中的属性。使用
ModelState.AddModelError
方法向返回的页面添加一个字符串alert/message。下面是使用您的代码的登录页面的简化版本:
Login.cshtml.cs
Login.cshtml
提交过程的替代手动控制
下面是Razor页面中
post
方法可以返回的full list。您可以通过客户端上的JavaScript并使用fetch
API来控制提交过程。您可以发布到
OnPostButton_Login
,然后返回一个内容结果(例如,return Content("This is a message.");
到fetch
方法的Promise
回调。在这个过程中,您的页面不会重新加载,只是发布表单中的输入值。下面是控制提交过程的SO post。