ASP.net MVC列表框

Dar*_*ung 3 asp.net-mvc

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

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

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

观点是这样的:

<%= Html.ListBox("projects", Model.Projects)%>
Run Code Online (Sandbox Code Playgroud)

谢谢.

Dar*_*rov 10

当然,您始终要定义一个视图模型,该模型将表示您希望在特定视图上显示的信息:

public class MyViewModel
{
    public string[] SelectedItems { get; set; }
    public IEnumerable<SelectListItem> Items { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后一个控制器:

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

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

<%= Html.ListBoxFor(
    x => x.SelectedItems, 
    new SelectList(Model.Items, "Value", "Text")
) %>
Run Code Online (Sandbox Code Playgroud)

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