21

選択した値が Html.DropDownList ヘルパー メソッドで機能しないという問題があります。下記参照:

これは私のコントローラーです:

public ActionResult Edit(int id = 0)
{
    NewsEvent item = GetItem(id);
    ViewBag.NewsItemId = new SelectList(ViewBag.NewsItemId.Items, "Id", "Name", item.NewsItemId);

    return View(item);
}

これは私の見解です:

@Html.DropDownList("NewsItemId",ViewBag.NewsItemId as SelectList, string.Empty,
                           new { @class = "form-control" })

ただし、ビューで以下を試すと、機能します。

@Html.DropDownList("NewsItemId", string.Empty)

以下も動作しますが、フィールド名がモデルと一致しないため、正しく投稿されません。

@Html.DropDownList("NewsItemIdDrop",ViewBag.NewsItemId as SelectList, string.Empty,
                           new { @class = "form-control" })

最初のオプションを使用する必要がある理由は、クラス属性をコントロールに追加できるようにするためです。

誰かが私が間違っていることを理解するのを手伝ってくれますか?

4

8 に答える 8

50

ここで同じ問題があります:

値を選択しない DropDownListFor

ViewBag プロパティ名に問題があります。モデルのプロパティと同じであるため、機能しません。次のように、ViewBag prop の名前を別の名前に変更するだけです。

ViewBag.NewsItemList = new SelectList(ViewBag.NewsItemId.Items, "Id", "Name", item.NewsItemId);

とビューで

@Html.DropDownList("NewsItemId",ViewBag.NewsItemList as SelectList, string.Empty,
                           new { @class = "form-control" })
于 2013-10-24T13:39:06.203 に答える
4

いろいろ試しましたが、結局こんな感じになりました

コントローラ内

int valittu_tila = 1;
var tapahtumantilat = new List<SelectListItem>();

tapahtumantilat.Add(new SelectListItem { Text = "Tapahtumaa kirjataan", Value = "0" });
tapahtumantilat.Add(new SelectListItem { Text = "Odottaa jonossa", Value = "1"});
tapahtumantilat.Add(new SelectListItem { Text = "Tapahtumaa käsitellään", Value = "2"});

ViewBag.tilalista = new SelectList(tapahtumantilat, "Value", "Text", valittu_tila);

そして、ビューに入れました(ドロップダウンの onchange イベントとクラスもここにありますが、必要に応じて削除できます)。

@Html.DropDownList("tuki_tila", ViewBag.tilalista as SelectList, "-- valitse tila --", new { @onchange = "executeticketsearch();", @class = "haku_dropdowns" })

(テキスト値と変数名のフィンランド語については申し訳ありませんが、それらは問題ではありません:D)

于 2014-09-26T05:56:14.313 に答える
2

私はあなたが使用できるという事実が好きではありませんでした

@Html.DropDownList("NewsItemID") 

そしてそれは動作します。次に、「クラス」属性を追加する必要があり、突然壊れます。構文を使用して、ある場所が機能し、別の場所が機能していないのを見ました

@Html.DropDownList("NewsItemId",ViewBag.NewsItemId as SelectList, string.Empty,
                       new { @class = "form-control" })

これを調査したところ、ビューの ViewBag.NewsItemId が実際には null であることがわかりました。したがって、Model フィールドと ViewBag フィールドが同じ名前を持つ有効な構文は次のとおりです。

@Html.DropDownList("NewsItemId", null, string.Empty,
                       new { @class = "form-control" })
于 2014-05-28T20:25:22.260 に答える
1

まず、どのように入力しViewBag.NewsItemId.Itemsますか?値がどこから来るのかわかりません。

選択した値を機能させるには、コレクションの要素と同じ型である必要があります。item.NewsItemIdが type の場合、 type (またはそれを実装するその他のコレクション型)TViewBag.NewsItemId.Itemsなければなりません。コレクションが同じタイプではない可能性があることに基づいているときに、選択した値としてIEnumerable<T>設定したため、そうではないようです。NewsItemIdNewsItemId.Items

于 2013-10-24T13:10:37.473 に答える