如何从ASP.NET MVC2中的DropDownListFor html帮助器中检索值?

时间:2010-04-23 09:48:58

标签: asp.net-mvc asp.net-mvc-2 html.dropdownlistfor

我知道这里几乎没有关于DropDownListFor的类似问题,但是没有帮助我......

我在我的项目中使用Entity Framework作为ORM。 EF模型叫做“Stete”。 Stete在名为“Drustva”的EF模型上有外语

现在我正在尝试制作一个用于编辑数据的表单,用于Stete模型。我设法显示所有内容,包括Stete.Drustva.Naziv属性,但我无法在我的处理程序方法[HttpPost]中获取最后一个属性。无论我在下拉列表中选择什么,它总是返回0。

以下是代码:

DrustvaController:

 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));
    }

EditView中:

        <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>

我很抱歉没有将对象的名称翻译成英文,但他们几乎没有适当的翻译。如有必要,我可以尝试创建类似的例子......

1 个答案:

答案 0 :(得分:0)

您是否在视图标记中加入了Html.BeginFormAjax.BeginForm?这是一种常见的疏忽,可能导致您所指的行为。我无法从您在问题中粘贴的代码中看出来。欢呼。