4

私は次のコードを持っています:

@Html.EditorFor(model => model.NoteRateGreaterThan, null, "advSearchInput", null)

問題は、投稿が行われるときに、「NoteRateGreaterThan」に入力した値が、コントローラーに送信されるモデルに入力されていないことです。ただし、元に戻すと:

@Html.EditorFor(model => model.NoteRateGreaterThan) 

できます。

'editorfor'入力の幅を変更できる必要があるため、最初のコードを使用できるようにする必要があります。私の調査では、これを行う唯一の方法はcss('advSearchInput'はクラスです)を使用することです。

4

2 に答える 2

4

あなたの最初の例が何をしていると思うかはわかりませんが、そうではありません。EditorForには、クラスなどのHtml属性を指定する機能はありません。Html.TextBoxForなどのより基本的なメソッドを使用する必要があります。

EditorForの3番目のパラメーターはhtmlFieldNameです。これは、要素IDが重複している場合に曖昧さを解消するために使用されます。

名前を変更しているため、フィールドにデータが入力されていないのはそのためです。

編集:

MVC 5.1以降、EditorForでは、次の構文を介してhtml属性を渡すことができるようになりました。

@Html.EditorFor(model => model.Foo, new { htmlAttributes = new { @class = "whatever" }})
于 2012-09-15T02:38:32.823 に答える
0

それ以降のバージョンのMVCEditorForには、次の構文を使用してクラスなどのHTML属性を指定する機能があります。

@Html.EditorFor(model => model.NoteRateGreaterThan, new { htmlAttributes = new { @class = "form-control" } })

CSSでクラスではなく要素IDを使用する場合は、要素を使用できます#NoteRateGreaterThan

使用しようとした構文は、エディターにカスタム要素IDを設定します。これは、同じモデルプロパティを参照する複数のコントロールがある場合に役立ちます。このコントロールのスタイルを設定したい場合は、CSSセレクターを使用できます#advSearchInput

ただし、お気づきのとおり、IDが変更されたエディターはモデルから値を取得しますが、重複するコントロールの1つだけを更新してモデルに戻すことができ、常にカスタムIDを持たないものになります。カスタムIDがないと、このモデルプロパティのコントロールがないため、モデルに値は書き込まれません。

バージョンに関する警告を含めるように編集されました。

于 2015-02-11T14:19:07.543 に答える