ASP.net MVC列表框

时间:2011-07-01 11:43:22

标签: asp.net-mvc

我的视图中有许多Html.Listbox控件,这些控件由IEnumberable<SelectListItem>填充

是否有一种方法可以在填充数据时自动选择某些项目?

IEnumerable中的特定选择列表项标记为Selected = true,但这不会传达到视图中。

观点如下:

<%= Html.ListBox("projects", Model.Projects)%>

感谢。

1 个答案:

答案 0 :(得分:10)

一如既往,您首先要定义一个视图模型,该模型将代表您希望在特定视图上显示的信息:

public class MyViewModel
{
    public string[] SelectedItems { get; set; }
    public IEnumerable<SelectListItem> Items { get; set; }
}

然后是控制器:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        var model = new MyViewModel
        {
            SelectedItems = new[] { "1", "3" },
            Items = new[] 
            {
                new SelectListItem { Value = "1", Text = "Item 1" },
                new SelectListItem { Value = "2", Text = "Item 2" },
                new SelectListItem { Value = "3", Text = "Item 3" },
            }
        };
        return View(model);
    }
}

最后在你的强类型视图中:

<%= Html.ListBoxFor(
    x => x.SelectedItems, 
    new SelectList(Model.Items, "Value", "Text")
) %>

正如预期的那样项目1 项目3 将在呈现列表框时被预先选择。