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" />

}

アプリを実行し、invoiceno 入力フィールドに値を入力せずに [GO] をクリックすると、失敗してユーザーにメッセージが表示されると予想していましたが、そうではなく、すぐにアクションに飛び込みます...私は何かが欠けていますが、それを理解することはできません...そして、d本は言いませんでした:)ありがとう

4

3 に答える 3

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 に答える
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

クライアント側の検証を担当するjsファイルへのリンクが欠落している必要があります..

于 2013-09-13T11:19:25.493 に答える