gpt4 book ai didi

C# MVC 模型验证时间

转载 作者:行者123 更新时间:2023-11-30 15:18:29 25 4
gpt4 key购买 nike

我们有一个模型,该模型以带有模型验证的局部 View 的形式显示。我们有几个像这样的字段:

[Required(ErrorMessage = "{0} cannot be empty")]
public string FirstName { get; set; }

[Required(ErrorMessage = "{0} cannot be empty")]
public string LastName { get; set; }

[RegularExpression(@"(\d{5})?", ErrorMessage = "Zip must be a 5 digit number or empty.")]
public string ZipCode { get; set; }

然后在 View 中,我们为那些带有验证消息的字段显示文本框,如下所示:

<td>
@Html.TextBoxFor(m => m.Officer.FirstName)
@Html.ValidationMessageFor(m => m.Officer.FirstName)
</td>
<td>
@Html.TextBoxFor(m => m.Officer.LastName)
@Html.ValidationMessageFor(m => m.Officer.LastName)
</td>
<td>
@Html.TextBoxFor(m => m.Officer.ZipCode)
@Html.ValidationMessageFor(m => m.Officer.ZipCode)
</td>

验证工作正常,但我注意到时间有些奇怪,而且我找不到任何文档说明原因。

填写表单时,如果我将 FirstName 或 LastName 留空,则在提交表单之前不会出现验证消息,检查模型状态是否有效并返回页面。

但是,如果我使用无效条目编辑邮政编码,即使我没有提交表单,验证消息也会立即弹出。

有没有办法让它们同时处理,这样用户就不会觉得奇怪了?

最佳答案

ASP.NET MVC 使用数据注释进行服务器端和客户端验证。

在 View 中,您正在使用 Razor.. 当您使用 HTML Helper 方法(例如 @Html.TextBoxFor)呈现输入字段时,razor View 引擎会查看应用在引用属性并将其他属性添加到 HTML 标记。

但是,只有某些/标准数据注释适用于客户端,它们是:

  • [必需] - 如果您在点击提交之前将其留空,您将不会看到验证消息。在点击“提交”之后可以看到客户端性能,并且表单未显示发送到服务器,因为客户端已经注意到这些字段是空的。您可以通过右键单击表单所在的页面,然后单击“检查”,然后单击“网络”选项卡,然后点击提交来检查这一点(离开所有必填字段均为空白)。您不应在该选项卡下看到任何内容,因为客户端在将表单发送到服务器之前对其进行了验证
  • [字符串长度]
  • [范围]
  • [比较]
  • [电话]
  • [电子邮件地址]
  • [网址]
  • [正则表达式]

此外,为了让它工作,在你的 Bundle.config 中..你有一个包可能叫做 "~/bundles/jqueryval"..并且你的 _Layout 页面。但是,您的 _Layout 页面底部可能确实有一个名为 @RenderSection("scripts", required: false)..

的部分

所以在你想要使用验证的 View 底部,你需要写:

@section scripts{
@Scripts.Render("~/bundles/jqueryval")
}

关于C# MVC 模型验证时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43638564/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com