C# ModelState.IsValid一直返回为false?
因此,我有一个视图,其中一个成员输入与他们相关联的PIN以打卡C# ModelState.IsValid一直返回为false?,c#,asp.net-mvc,entity-framework,validation,C#,Asp.net Mvc,Entity Framework,Validation,因此,我有一个视图,其中一个成员输入与他们相关联的PIN以打卡 @model Models.Member @{ Layout = "~/Views/Shared/_HomeLayout.cshtml"; } <h1 style="margin-top: 0px;">Club Members Login Below!</h1> @*add this to the style for better ipad title -> "text-align: cent
@model Models.Member
@{
Layout = "~/Views/Shared/_HomeLayout.cshtml";
}
<h1 style="margin-top: 0px;">Club Members Login Below!</h1> @*add this to the style for better ipad title -> "text-align: center;"*@
</br>
@using (Html.BeginForm("ClubHours", "Login", FormMethod.Post))
{
@Html.LabelFor(c => c.PIN)
@Html.TextBoxFor(c => c.PIN)<br />
@Html.ValidationMessageFor(c => c.PIN)<br />
<input type="submit" name="submit" value="ClockIn" />
<input type="submit" name="submit" value="ClockOut" />
}
最后是成员类
public class Member
{
public int Id { get; set; }
[Required]
[MaxLength(4, ErrorMessage = "PIN must be 4 numbers long"), MinLength(4, ErrorMessage = "PIN must be 4 numbers long")]
public string PIN { get; set; }
[Required]
[Display(Name ="First Name")]
public string FirstName { get; set; }
[Required]
[Display(Name = "Last Name")]
public string LastName { get; set; }
[Display(Name = "Date of Birth")]
public DateTime? Birthdate { get; set; }
public virtual ICollection<MemberClubHours> Hours { get; } = new HashSet<MemberClubHours>();
}
该代码工作正常,将跟踪成员的工作时间,但我正在尝试实施验证,但即使我输入了与系统中的成员关联的PIN,它也会返回为无效?任何帮助都将不胜感激 您正在验证从前端发送的模型。不是数据库,您确定模型是根据模型中的数据注释填充的吗
查看它是asp.net core 3.1,但仍然相关您正在验证从前端发送的模型。不是数据库,您确定模型是根据模型中的数据注释填充的吗
查看它的asp.net core 3.1,但仍然相关由于成员模型需要Id、PIN、FirstName、LastName字段,因此成员模型显示为无效 您无法使用
ModelState.IsValid验证此类,因为它将检查所有属性--,并且看起来您只传递PIN属性。
如果不想为其创建viewModel,可以将这些属性作为隐藏的inputfields包含在内
@using (Html.BeginForm("ClubHours", "Login", FormMethod.Post))
{
@Html.HiddenFor(c=>c.Id)
@Html.HiddenFor(c=>c.FirstName)
@Html.HiddenFor(c=>c.LastName)
@Html.LabelFor(c => c.PIN)
@Html.TextBoxFor(c => c.PIN)<br />
@Html.ValidationMessageFor(c => c.PIN)<br />
<input type="submit" name="submit" value="ClockIn" />
<input type="submit" name="submit" value="ClockOut" />
}
@使用(Html.beginfour(“ClubHours”,“Login”,FormMethod.Post))
{
@HiddenFor(c=>c.Id)
@Html.HiddenFor(c=>c.FirstName)
@Html.HiddenFor(c=>c.LastName)
@LabelFor(c=>c.PIN)
@Html.TextBoxFor(c=>c.PIN)
@Html.ValidationMessageFor(c=>c.PIN)
}
成员模型显示为无效,因为该成员模型需要Id、PIN、FirstName、LastName字段
您无法使用ModelState.IsValid验证此类,因为它将检查所有属性--,并且看起来您只传递PIN属性。
如果不想为其创建viewModel,可以将这些属性作为隐藏的inputfields包含在内
@using (Html.BeginForm("ClubHours", "Login", FormMethod.Post))
{
@Html.HiddenFor(c=>c.Id)
@Html.HiddenFor(c=>c.FirstName)
@Html.HiddenFor(c=>c.LastName)
@Html.LabelFor(c => c.PIN)
@Html.TextBoxFor(c => c.PIN)<br />
@Html.ValidationMessageFor(c => c.PIN)<br />
<input type="submit" name="submit" value="ClockIn" />
<input type="submit" name="submit" value="ClockOut" />
}
@使用(Html.beginfour(“ClubHours”,“Login”,FormMethod.Post))
{
@HiddenFor(c=>c.Id)
@Html.HiddenFor(c=>c.FirstName)
@Html.HiddenFor(c=>c.LastName)
@LabelFor(c=>c.PIN)
@Html.TextBoxFor(c=>c.PIN)
@Html.ValidationMessageFor(c=>c.PIN)
}
PrintValidationSummary
太多了。请参阅查找模型错误。也可以打印ValidationSummary
太多了。请参阅查找模型错误。啊,啊,啊,啊!我早该知道的,谢谢!啊,对了!我早该知道的,谢谢!
@using (Html.BeginForm("ClubHours", "Login", FormMethod.Post))
{
@Html.HiddenFor(c=>c.Id)
@Html.HiddenFor(c=>c.FirstName)
@Html.HiddenFor(c=>c.LastName)
@Html.LabelFor(c => c.PIN)
@Html.TextBoxFor(c => c.PIN)<br />
@Html.ValidationMessageFor(c => c.PIN)<br />
<input type="submit" name="submit" value="ClockIn" />
<input type="submit" name="submit" value="ClockOut" />
}