0

我将 List 从 Model 传递到 view ,所以我在 view 中指定了这个 IEnumerable。在这种情况下,客户端验证不会触发

看法 :

@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 回答