0

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 ヘルパーがどのようにネストされているかを示しています。

     <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 ヘルパーを使用できません。@Html.DropDownListFor() ヘルパーは、私が問題を抱えているものです。前に述べたように、フォーム コントロール クラスを使用したこのヘルパーの検証は正常に機能しますが、選択が行われていない場合、ドロップダウン リスト フィールドは本来のように赤くなりません。@Html.TextBoxFor() ヘルパーは同じフォーム コントロール クラスを使用していますが、検証して色を赤に変更します。

「has-error」クラスを使用することが提案されていますが、以下のスニペットが示すように、これはすでに bootstrap.css 内に実装されています。

.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 ヘルパーでは機能しないのはなぜですか?

これら 2 つのヘルパーの出力は次のようになります。

これらのことの1つは他のものとは異なります

4

1 に答える 1

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

于 2014-10-13T18:47:12.197 に答える