如何在mvc中进行验证

时间:2013-09-13 11:11:32

标签: asp.net-mvc validation

我正在学习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输入字段中输入任何值时,我预计它会失败,并向用户显示一条消息...但不是这种情况,它直接进入操作...... 我知道我错过了一些东西,但无法弄明白......而d书并没有说:) 感谢

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

在完成了很多关于SO的答案并尝试了之后,我开始工作了。 事实证明,默认情况下未加载不显眼的验证脚本。我通过在_Layout.cshtml

的末尾添加来修复它

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

最终结果:

@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/jqueryval")
@RenderSection("scripts", required: false)

答案 2 :(得分: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" />

       }