0

List を Model から view に渡しているので、この IEnumerable のように view で指定しました。この状況では、クライアント側の検証が起動していません

意見 :

@model  IEnumerable<ShoppingCart.Models.ShoppingClass>
@{
    ViewBag.Title = "Display";

}
<script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script>

@Html.ValidationSummary(true)
@using (Html.BeginForm())
{

    <table>
        <tr>
            <td>@Html.Label("BrandName")
            </td>
            <td>@Html.TextBox("BrandName")
                <div>
                    @Html.ValidationMessage("BrandName")</div>
            </td>
            <td>
                <input type="submit" value="Search" name="Search" />
            </td>
        </tr>
    </table>

}
4

1 に答える 1

1

あなたが書いたものは間違っています。

ビューは厳密に型指定されていますが、厳密に型指定されたプロパティや検証メッセージは使用していません。また、フォームの外に検証の概要があります。これは機能しません。

@using (Html.BeginForm())
@Html.ValidationSummary(true)

次に、次のようなことを行う必要があります。

<table>
    @foreach (ShoppingClass shoppingClass in Model) {
    <tr>
        <td>@Html.LabelFor(x => x.BrandName)
        </td>
        <td>@Html.TextBoxFor(x => x.BrandName)
            <div>
                @Html.ValidationMessageFor(x => x.BrandName)</div>
        </td>
    </tr>
    }
</table>
<input type="submit" value="Search" name="Search" />

同じコントローラーとアクションに移動するすべてのアイテムに検索ボタンがある理由はわかりませんが、それはあなたが理解できるように残しておきます。

于 2012-08-02T10:39:21.810 に答える