0

这个看似简单的任务,似乎从来没有人做过。

我有一个控制器,它有一个操作来检索包含我的语言信息的表文化:

    [HandleError]
    [ChildActionOnly]
    public ActionResult LanguageDropdownlist()
    {
        var languageDropdownlist = _unitOfWork.CulturesRepository.Get();
        return PartialView("_LanguageSelectionPartial", languageDropdownlist.ToList());
    }

languageDropdownlist 的结构如下:

List languageDropdownlistItems 
[0]
    - display_name
    - id
    - name
    - ...
[1]
    - display_name
    - id
    - name
    - ...
[2]
    - display_name
    - id
    - name
    - ...
[3]
    - display_name
    - id
    - name
    - ...

我将一个列表传递给视图

视图中执行以下操作:

@model List<ArtWebShop.Models.cultures>


<p>
    @Html.DropDownList("name", (IEnumerable<SelectListItem>)Model)
</p>

看在上帝的份上,我如何填充下拉列表,位于视图中的上述代码显然不起作用,但我似乎无法从控制器和视图中找到带有代码的单一解释。

PS:我不想使用 viewData 或 viewBag。

4

2 回答 2

0

请看:如何从 ASP.NET MVC 中的枚举创建下拉列表?

我喜欢<%: Html.EnumDropDownListFor(model => model.MyEnumProperty) %>

为你工作了吗?

于 2012-12-06T16:59:26.930 回答
0

我找到了我的解决方案。我的灵感来自: http ://forums.asp.net/t/1817879.aspx/1其实很简单。

在我的控制器中:

    public ActionResult LanguageDropdownlist()
    {
        var culturelist = (_unitOfWork.CulturesRepository.Get()).ToArray();
        var list = new List<SelectListItem>();
                    for (int i = 0; i < culturelist.Count(); i++)
        {
            list.Add(new SelectListItem { Text = culturelist[i].name, Value = culturelist[i].id.ToString() });
        }

        return PartialView("_LanguageSelectionPartial", list);

    }

在这里,我将它们添加到我的视图中,以便我可以在那里访问它们。

最后在我的部分观点中:

@model List<SelectListItem>


<p> 
    @Html.DropDownList("language-dropdown",  Model)
</p>

我通过@model 访问它们并将它们放在@Html.DropDownList 中。

于 2012-12-06T18:41:11.650 回答