如何在MVC4中使用Html.ListBoxFor

时间:2014-05-13 11:51:27

标签: c# asp.net-mvc-4

我正在尝试填充ListBox。我的模型只是一个列表。我无法找到我需要与@ Html.ListBoxFor()一起使用的参数的简单解释。

以下是我的代码的一部分:

    public ActionResult Index()
    {
         List<string> names = GetAllNames();

        return View(names);
    }

 ...

在视图中:

@model List<string>

...

@Html.ListBoxFor(?)

感谢。

2 个答案:

答案 0 :(得分:4)

您可以在控制器操作中填充模型列表:

someAction
{
    CountryModel objcountrymodel = new CountryModel();  
    objcountrymodel.CountryList = GetAllCountryList();
    return View(objcountrymodel);
}

public SelectList GetAllCountryList()
{
    List<Country> objcountry = new List<Country>();
    objcountry.Add(new Country { Id = 1, CountryName = "India" });
    objcountry.Add(new Country { Id = 2, CountryName = "USA" });
    objcountry.Add(new Country { Id = 3, CountryName = "Pakistan" });
    objcountry.Add(new Country { Id = 4, CountryName = "Nepal" });
    SelectList objselectlist = new SelectList(objcountry, "Id", "CountryName");
    return objselectlist;
}

在您的.cshtml中,您可以将其用作:

@Html.ListBoxFor(m => m.SelectedCountry, new SelectList(Model.CountryList, "Value", "Text", Model.CountryList.SelectedValue), new { @Id = "lstcountry", @style = "width:200px;height:60px;" })

要处理视图中的列表,您需要将其强制转换为 SelectList 类型。在我们的示例中, Country 被假定为此目的的模型。 (具有选择列表的键和值)

答案 1 :(得分:1)

首先你需要创建一个viewModel;这里我们假设它名为ListBoxViewModel。

public class ListBoxtViewModel
{
   public string SelectedItem{get;set;}
   public List<SelectListItem> selectItemList{get;set;)
}

其次,使用以下代码添加到您的视图中。

@Html.ListBoxFor(m=>m.SelectedItem, List<SelectListItem> selectItemList)