我正在学习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书并没有说:) 感谢
答案 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" />
}