【问题标题】:Html.DropDownListFor() Validation works but field does not turn redHtml.DropDownListFor() 验证有效,但字段未变为红色
【发布时间】:2014-10-14 20:52:41
【问题描述】:

我已经看到了许多关于 DropDownListFor 验证的类似问题和答案,但我没有看到我的特定问题。

这是我的 html 助手。

VB:

@Html.DropDownListFor(Function(Model) Model.AccLev, New SelectList(Model.Items), "Select an Accuracy Level", New With {.class = "form-control"})

C#:

@Html.DropDownListFor(Model => Model.AccLev, new SelectList(Model.Items), "Select an Accuracy Level", new { @class = "form-control" })

如果没有进行下拉选择,此帮助程序会很好地验证,并显示验证消息,但字段本身不会像使用相同“表单控件”的其他 TextBoxFor() 帮助程序那样更改为红色边框类。

这一定是 CSS 样式问题,但我不知道到哪里去找问题。我查看了 bootstrap.css 和 site.css 文件,但在它们中都没有任何异常。

编辑:

以下显示了 Html Helper 如何嵌套在我的视图中的表行中:

     <tr>
        <td>
            <div class="editor-label">
                @Html.LabelFor(Function(Model) Model.AccLev)
            </div>
            <div class="editor-field">
                @Html.DropDownListFor(Function(Model) Model.AccLev, New SelectList(Model.Items), "Select an Accuracy Level", New With {.class = "form-control"})
                @Html.ValidationMessageFor(Function(Model) model.AccLev)
            </div>
        </td>
        <td>
            <div class="editor-label">
                @Html.LabelFor(Function(Model) Model.Units)
            </div>
            <div class="editor-field">
                @Html.TextBoxFor(Function(Model) Model.Units, New With {.class = "form-control"})
                @Html.ValidationMessageFor(Function(Model) model.Units)
            </div>
        </td>
    </tr>

表格自然是在一个表单中,否则我将无法使用 Html Helpers。 @Html.DropDownListFor() 助手是我遇到的问题。正如我之前所说,使用表单控制类的这个助手的验证工作正常,但是当没有进行选择时,下拉列表字段不会变成应有的红色。 @Html.TextBoxFor() Helper 使用相同的表单控件类,但它会验证并将其颜色更改为应有的红色。

有人建议我使用“has-error”类,但这已经在 bootstrap.css 中实现,如下面的 sn-p 所示:

.has-error .form-control {  border-color: #b94a48;
                            -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
                            box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}

我的困惑是为什么表单控件类使用 TextBoxFor Html 助手而不使用 DropDownListFor 助手?

这两个助手的输出如下所示:

【问题讨论】:

  • 如果您发布您的 HTML 和 CSS 会很有帮助,尤其是因为您认为这可能是 CSS 问题。
  • 请不要使用“bootstrap”标签,使用“twitter-bootstrap”,因为它意味着别的东西

标签: html css twitter-bootstrap asp.net-mvc-5 form-control


【解决方案1】:

你的控件的父元素必须有.has-error类:

<div class="form-group has-error">
  <label class="control-label" for="inputError1">Input with error</label>
  <input type="text" class="form-control" id="inputError1">
</div>

http://getbootstrap.com/css/#forms-control-validation

【讨论】:

    猜你喜欢
    • 2013-11-24
    • 2017-01-14
    • 1970-01-01
    • 1970-01-01
    • 2017-07-27
    • 1970-01-01
    • 1970-01-01
    • 2021-08-08
    • 1970-01-01
    相关资源
    最近更新 更多