对具有多个提交的表单进行建模和验证



我正在尝试找出使用 Core 2 对具有多个表单标签和多个提交按钮的表单进行建模和验证的正确方法 ASP.Net。我有一个表单,用户可以在其中输入用户名和密码并登录,或者输入他们的名字,姓氏和手机号码并注册。这是我的模型:

public class Landing
{
[Required]
public string Username { get; set; }
[Required]
public string Password { get; set; }
[Required]
public string FirstName { get; set; }
[Required]
public string LastName { get; set; }
[Required]
public string CellNumber { get; set; }
}

这是我的相关剃须刀视图代码:

@model MyApp.ViewModels.Landing
<form method="post">
<div>
<input asp-for="Username" type="text" />
</div>
<div>
<input asp-for="Password" type="password" />
</div>
<div>
<input type="submit" value="Sign In" />
</div>
</form>
<form method="post">
<div>
<input asp-for="FirstName" type="text" />
</div>
<div>
<input asp-for="LastName" type="text" />
</div>
<div>
<input asp-for="CellNumber" type="text" />
</div>
<div>
<input type="submit" value="Sign Up" />
</div>
</form>

现在我遇到的问题是我的验证。因为我的所有字段都标有[Required]属性,所以当我使用任一提交按钮提交表单时,它会验证所有 5 个字段。我想做的是验证UserNamePassword,如果按下第一个提交按钮,或者验证FirstNameLastNameCellNumber,如果按下第二个提交按钮。我怎样才能做到这一点?

我会将我的模型分成两个类,然后改用ViewModel

public class SignIn
{
[Required]
public string Username { get; set; }
[Required]
public string Password { get; set; }
}
public class SignUp
{
[Required]
public string FirstName { get; set; }
[Required]
public string LastName { get; set; }
[Required]
public string CellNumber { get; set; }
}
public class LandingViewModel
{
public SignIn SignIn { get; set; }
public SignUp SignUp { get; set; }
}

然后:

@model MyApp.ViewModels.LandingViewModel
SignIn.Username, SignIn.Password, SignUp.FirstName,...

最新更新