0

我正在学习 MVC,但我无法让验证工作。

我读到我可以在我的模型中做这样的注释:

 public class InvoiceNoModel
{
    [Required]
    [Display(Name = "Invoice Number")]
    public string InvoiceNo { get; set; }
}

我这样做了,在我看来我有这个:

@using (Html.BeginForm("GetInvoice","WebPay", FormMethod.Post))
{
<p class="flat">@Html.ValidationSummary(true) </p>
<p class="flat">
        @Html.LabelFor(m=>m.InvoiceNo)
        @Html.TextBoxFor(m=>m.InvoiceNo)
        @Html.ValidationMessageFor(m=>m.InvoiceNo)
</p>
<input class="button-1 search-box-button" value="GO" type="submit" />

}

当我运行我的应用程序并单击 GO 而不在 invoiceno 输入字段中输入任何值时,我预计它会失败,并向用户显示一条消息……但事实并非如此,它直接进入操作……我知道我'我错过了一些东西,但无法弄清楚......而且书没有说:)谢谢

4

3 回答 3

0

您必须缺少负责客户端验证的 js 文件的链接。

于 2013-09-13T11:19:25.493 回答
0

在倾注了很多关于 SO 的答案并进行了尝试之后,我得到了它的工作。事实证明,默认情况下不加载不显眼的验证脚本。我通过在 _Layout.cshtml 的末尾添加来修复它

@Scripts.Render("~/bundles/jqueryval")

最终结果:

@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/jqueryval")
@RenderSection("scripts", required: false)
于 2013-09-13T15:02:56.843 回答
0

设置 ValidationSummary(false) 或只是空白 ValidationSummary() ,然后它将起作用

     @using (Html.BeginForm("GetInvoice","WebPay", FormMethod.Post))
       {
         <p class="flat">@Html.ValidationSummary(true) </p>
         <p class="flat">
         @Html.LabelFor(m=>m.InvoiceNo)
         @Html.TextBoxFor(m=>m.InvoiceNo)
         @Html.ValidationMessageFor(m=>m.InvoiceNo)
         </p>
         <input class="button-1 search-box-button" value="GO" type="submit" />

       }
于 2014-07-15T15:28:36.813 回答