我正在尝试找出使用 ASP.Net Core 2 建模和验证具有多个表单标签和多个提交按钮的表单的正确方法。我拥有的是一个表单,用户可以在其中输入用户名和密码并登录,或者输入他们的名字、姓氏和手机号码并注册。这是我的模型:
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 个字段。我想做的是验证UserName
and Password
仅当按下第一个提交按钮或验证时FirstName
, LastName
and CellNumber
仅当按下第二个提交按钮时。我怎样才能实现这个目标?
我会将我的模型分成两类,然后使用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; }
}
Then:
@model MyApp.ViewModels.LandingViewModel
SignIn.Username, SignIn.Password, SignUp.FirstName,...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)