8

タイトルがそのタスクの助けを求めていると言っているように、私はそれについて多くのチュートリアルを読みましたが、どれもdropdownlistforデータベースからロードする方法である私の問題を解決できません. はるかに、次のコードを取得しました。

**LNClientes():**

public List<ENDistrito> DistritoListar()
{
    return new ADClientes().DistritoListar();
}

**ADClientes():**

public List<ENDistrito> DistritoListar()
        {
            Database oDatabase =                      DatabaseFactory.CreateDatabase(ConfigurationManager.AppSettings["conexionBD"]);
            DbCommand odbcommand = oDatabase.GetStoredProcCommand("USP_SEL_DISTRITOS");

            List<ENDistrito> lista = new List<ENDistrito>();
            using (IDataReader reader = oDatabase.ExecuteReader(odbcommand))
            {
                while (reader.Read())
                    lista.Add(new ENDistrito(reader));
            }
            return lista;
        }

**Controller:**

 public ActionResult Registrar()
        {
            ViewBag.Message = Resources.Language.Title_Page_MC_C;
            var ListaDistrito = new LNClientes().DistritoListar();
            ViewBag.ObtenerDistrito = new SelectList(ListaDistrito, "IdDistrito", "DescripcionDistrito");
            return View();
        }

意見:

<div class="editor-field">
            @Html.EditorFor(model => model.DistritoCliente)
            @Html.DropDownListFor(model => model.DistritoCliente,(SelectList)ViewBag.ObtenerDistrito,"--Seleccione--")
            @Html.ValidationMessageFor(model => model.DistritoCliente)
        </div>

この時点まではすべて問題ありません。そのフォームを開くとdropdownlistfor動作しますが、フォームを送信すると次のメッセージが表示されます。

キー「DistritoCliente」を持つタイプ「IEnumerable」の ViewData アイテムはありません。

私が間違っていること、またはこの問題をどのように解決できるかについてのアイデア。

前もって感謝します。

アレックス

4

2 に答える 2

4

コントローラ:

ViewBag.States = new SelectList(db.States, "StateID", "StateName");

View: (In your view write the code for dropdown like this)

@Html.DropDownListFor(m => m.Address.StateID,ViewBag.States as SelectList,"--Select State--")

--> ここでは、プロパティの 1 つとして StateID を持つデータベース内のテーブルの 1 つのアドレス

これは私にとって完璧に機能しました..試してみてください!!

于 2015-02-17T08:55:01.757 に答える