自定义选择列表项

本文关键字:列表 选择 自定义 | 更新日期: 2023-09-27 18:21:31

我正试图消除我的代码对System.Web.Mvc的依赖,因为我已经将我的模型提取到一个单独的.dll(MVC项目之外)中,这样它就可以在许多项目之间共享。

我正在尝试创建一个"自定义SelectListItem",它只是一个具有string Textstring Value两个属性的class,看起来像:

public class DropDownListItem
{
    public string Text { get; set; }
    public string Value { get; set; }
}

然而,在我看来,我正试图找到一种方法,将这个对象传递到DropDownListFor中。有没有办法操纵它,这样我就可以做一些类似的事情:

@Html.DropDownListFor(x => x.Value, Model.Values, new { @class="form-control" })

其中Models.Values属于List<DropDownListItem>类型。

自定义选择列表项

Yo不需要创建DropDownListItem类,而是可以创建自己的POCO(Plain-Old-C#-Object)来包含列表选项:

例如,假设您有以下类:

class MyClass
{
 public int Id {get; set; }
 public string name {get; set; }
}

要拥有包含MyClass列表的dropDownlist,您可以简单地使用:

 @Html.DropDownListFor(model => model.Entity.Id, new SelectList(MyClass, "Id", "Name"))

id表示所选内容的值,名称将是DropDownList中显示的文本。

希望这能有所帮助!

您可以将列表项放在viewbag中,并在视图中获得值,如下所示:

@Html.DropDownList("Ligas")

和你的码尾

Modelo.AdminSitio = Modelo.GetAdminSitio();
ViewBag.Ligas = new SelectList(Modelo.AdminSitio.ListadoLigas, "Value", "Text");

当listdoLigas等于时

ListadoLigas= (from x in db.Ligas select new DropDownListItem { Value = x.Oid_Liga, Text = x.NombreDeLiga}).ToList();