我的登录和注册表单在同一页上。
在ASP.NET Core剃刀页面中,我有一个名为account
的页面,其中有两个处理程序,一个是OnPostLogin
用于登录,另一个是OnPostRegister
用于新用户注册。
我在类级别定义了两个属性,loginModel
和registerModel
,这样我就可以用标签帮助器将表单输入连接到每个属性。在asp-page-handler
中,我将每个表单都放置为自己的处理程序。当我想在代码中进行验证时,使用此代码。
if (ModelState.IsValid)
它从来都是无效的,并且总是因为其他表单条目而无效,即登录条目对注册无效(因为它们是空的),并且注册表单条目对登录也无效。
如何解决这个问题?
我打赌
if (ModelState.IsValid)
{
// Register Or Login Action
}
我从代码中删除了它,并在客户端使用jQuery验证执行了验证,但我也必须在服务器端这样做。
1条答案
按热度按时间gzszwxb41#
您可以将登录表单和注册表单分成两个不同的部分视图。这样,每个表单都将有自己的独立作用域和验证上下文。
下面是我基于这个PageModel的工作演示:
下面是部分代码,展示了如何将相关类传递给它的
@model
指令:在Razor页面中包含两个部分,如下所示:
然后,在PageModel中不再使用两个绑定属性,而是更新处理程序,将相应的模型作为参数。那么
ModelState
只会使用参数,而不会受到其他东西的影响:或者,为每个表单创建单独的页面。