0

ナゲットのフールプルーフ パッケージを使用したクライアント側の検証に問題があります。

私のモデル

public class Item {

    public int Id { get; set; }

    [Required]
    public double Quantity { get; set; }

    [RequiredIfNotEmpty("Quantity")]
    public string LocationCode { get; set; }
    public IEnumerable<SelectListItem> LocationList { get; set; }
}

私の見解では、私は持っています

    @model IList<MyApp.Models.Item>
    <!-- some HTML -->

    @for(int i = 0; i < Model.Count; i++)
    {
        <tr>
            <td>
                @Html.DropDownListFor(p => p[i].LocationCode, Model[i].LocationList, string.Empty, new { @class = "form-control" })                  
                @Html.ValidationMessageFor(p => p[i].LocationCode)
            </td>
            <td>
                @Html.TextBoxFor(p => p[i].Quantity, new { @class = "form-control"})
                @Html.ValidationMessageFor(p => p[i].Quantity)
            </td>
        </tr>
    }

私の _Layout.cshtml には、次のバンドルが含まれています。

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

そして、私の jqueryval バンドルは次のようになります。

bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
                        "~/Scripts/jquery.validate*",
                        //"~/Scripts/MvcFoolproofJQueryValidation.min.js",
                        "~/Scripts/mvcfoolproof.unobtrusive.min.js"
                        //"~/Scripts/MvcFoolproofValidation.min.js"
                        ));

私のweb.configには次のものがあります:

<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />

mvcfoolproof js ファイルとさまざまな組み合わせを試しましたが、クライアント側の検証を機能させることができません。Quantity テキストボックスでは機能しています。サーバー側の IS が機能していることに注意してください。

4

1 に答える 1

0

モデルを IList から MyApp.Models.Item に変更し、コントローラーからビューに項目を 1 つだけ渡すようにしてください。その後、クライアントの検証が機能するはずです。@for() ループが問題だと思います-複数の「数量」フィールドがあり、かみそりは正しいものを選択できません。

于 2015-11-23T14:15:01.483 に答える