MVC5视图下拉列表

时间:2014-07-30 12:25:46

标签: c# asp.net-mvc-5 html.dropdownlistfor asp.net-mvc-views

在C#MVC5 Internet应用程序视图中,如何显示下拉列表以供用户选择从View Model列表中填充的列表项?

以下是ViewModel代码:

public class MapLocationItemViewModel
{
    [Editable(false)]
    public int mapLocationForeignKeyId { get; set; }
    public List<string> mapLocationItemTypes { get; set; }
    public MapLocationItem mapLocationItem { get; set; }
}

以下是我目前在View中的代码:

<div class="form-group">
    @Html.LabelFor(model => model.mapLocationItem.mapLocationItemType, new { @class = "control-label col-md-2" })
    <div class="col-md-10">
        @Html.EditorFor(model => model.mapLocationItemTypes)
    </div>
</div>

mapLocationItemTypes中的每个项目当前都显示为class="text-box single-line valid"

是否有MVC视图标记会显示从list<string>array填充的列表?

我尝试过以下代码:

@Html.DropDownListFor(model => model.mapLocationItemTypes)

但是,我收到编译错误,并且不确定重载方法的值。

如何在视图中显示列表的最佳方式,以便用户可以从列表中选择列表项?

提前致谢

3 个答案:

答案 0 :(得分:19)

型号:

 public List<SelectListItem> mapLocationItemTypes { get; set; }
 public int mapLocationItemVal { get; set; }

查看:

@Html.DropDownListFor(m => m.mapLocationItemVal , new SelectList(Model.mapLocationItemTypes , "Value", "Text"), "  -----Select List-----  ")

在上面的示例中,DropDownListFor()的第三个参数,即" -----Select List----- "将是您的下拉列表的初始选定项,其值等于''

在POST mapLocationItemVal期间,控制器将选择下拉值。

上面显示的代码是在MVC中绑定Dropdownlist的最佳和最简单的方法。

答案 1 :(得分:2)

试试这个;

我假设您需要在发布数据时根据所选值填充mapLocationItem.mapLocationItemType

@Html.DropDownListFor(model => model.mapLocationItem.mapLocationItemType, new SelectList(Model.mapLocationItemTypes))

如果您想添加CSS类,可以按照以下方式执行。

@Html.DropDownListFor(model => model.mapLocationItem.mapLocationItemType, new SelectList(Model.mapLocationItemTypes), new { @class = "your-class" })

答案 2 :(得分:2)

在控制器中创建方法

Public ActionResult Index()
{
   SampleDBContext db = new SampleDBContext();
   ViewBag.table_name = new SelectList(db.table_name, "DataValueField", "DataTextField");

   return View();
} 

控制器视图

@Html.DropDownList("table_name", "select a item")