0

ここで DropDownListFor について同様の質問がいくつかあったことは知っていますが、どちらも役に立ちませんでした...

プロジェクトで Entity Framework を ORM として使用しています。「Stete」というEFモデルがあります。Steteには、「Drustva」と呼ばれるEFモデルのForeignがあります

Stete モデルのデータを編集するためのフォームを作成しようとしています。Stete.Drustva.Naziv プロパティを含むすべてを表示できましたが、ハンドラー メソッド [HttpPost] でこの最後のプロパティを取得できません。ドロップダウン リストで何を選択しても、常に 0 が返されます。

コードは次のとおりです。

Drustvaコントローラー:

 public static IEnumerable<SelectListItem> DrustvaToSelectListItemsById(this KnjigaStetnikaEntities pEntities, int Id)
    {
        IEnumerable<Drustva> drustva = (from d in pEntities.Drustva
                                        select d).ToList();
        return drustva.OrderBy(drustvo => drustvo.Naziv).Select(drustvo => new SelectListItem
        {
            Text = drustvo.Naziv,
            Value = drustvo.Id.ToString(),
            Selected = (drustvo.Id == Id)? true : false
        });
    }

SteteController:

        private IEnumerable<SelectListItem> privremenaListaDrustava(int Id)
        {
        using (var ctx = new KnjigaStetnikaEntities())
        {
            return ctx.DrustvaToSelectListItemsById(Id);
        }
    }

public ActionResult IzmijeniPodatkeStete(Int32 pBrojStete)
    {
        PretragaStetaModel psm = new PretragaStetaModel();
        ViewData["drustva"] = privremenaListaDrustava(psm.VratiStetuPoBrojuStete(pBrojStete).Drustva.Id);

        ViewData.Model = new Models.Stete();

        return View("EditView", (Stete.Models.Stete)psm.GetSteta(pBrojStete));
    }

エディットビュー:

        <div class="editor-label">
            <%: Html.Label("Društvo") %>
        </div>
        <div class="editor-field">
            <%: Html.DropDownListFor(m => m.Drustva.Naziv, ViewData["drustva"] as IEnumerable<SelectListItem>) %>
            <%: Html.ValidationMessageFor(model => model.FKDrustvo) %>
        </div>

オブジェクトの名前を英語に翻訳していないことは申し訳ありませんが、適切な翻訳がほとんどありません。必要に応じて、同様の例を作成してみることができます...

4

1 に答える 1

0

Html.BeginFormビュー マークアップにまたはを含めましたAjax.BeginFormか? これは、言及している動作を引き起こす可能性のある一般的な見落としです。質問に貼り付けたコードからはわかりません。乾杯。

于 2010-04-23T12:56:15.423 に答える