Asp.net mvc 选择列表法

Asp.net mvc 选择列表法,asp.net-mvc,Asp.net Mvc,问题描述: 我正在使用ASP.NET MVC,我的控制器类中有以下方法。此方法使用SelectList方法从数据库中选择项目列表。然后,这些项目将被传递到要在下拉列表中显示的视图 public ActionResult Edit(int id) { Album album = db.Albums.Find(id); ViewBag.ArtistId = new SelectList(db.Artists, "ArtistId", "Name", album.ArtistId);

问题描述: 我正在使用ASP.NET MVC,我的控制器类中有以下方法。此方法使用SelectList方法从数据库中选择项目列表。然后,这些项目将被传递到要在下拉列表中显示的视图

public ActionResult Edit(int id)
{
    Album album = db.Albums.Find(id);

    ViewBag.ArtistId = new SelectList(db.Artists, "ArtistId", "Name", album.ArtistId);
    return View(album);
}
我对selectMethod的理解:

我知道第一个参数包含一个项目列表。
第三个参数是要显示的属性。在本例中,我们将显示艺术家的name属性。 根据我的研究,我发现第四个参数是将显示在下拉列表中的默认值

我的问题:

1) 我想有人帮我了解第二个参数

2) 既然我们正在显示艺术家的名字,那么如何使用艺术家ID在第四个参数中显示默认的艺术家名字呢

我希望你们能理解我的问题。如果你需要我这样做,我很乐意向你澄清

  • 第二个参数是第一个参数中每个元素的“value”属性或字段的名称。由于两位艺术家可能具有相同的属性,因此通常最好使用ID列(如示例中所示),以便您明确知道选择了哪个项目
  • 在本例中,您提供当前查看的相册的艺术家作为默认显示。假设
    db.Artists
    包含一个其
    ArtistId
    属性与给定值匹配的艺术家,则呈现的HTML将生成一个选择列表,选择该艺术家
  • 这回答了你的问题吗?

    根据:

    第一个参数是要从中构造列表的对象的
    IEnumerable

    第二个参数是对象属性的名称(对于列表中的每个对象),该属性将用作每个呈现HTML元素的
    属性

    第三个参数是对象属性的名称(对于列表中的每个对象),该属性将用作每个呈现HTML的
    文本
    属性


    第四个参数是默认选择的
    值(它指示将使用
    选择的
    属性呈现的列表元素)。

    因此,请确保am位于同一页面上。第二个参数背后的原因是我们可能有两个同名的艺术家,这就是为什么我们需要ID来区分他们。因此,当我单击编辑按钮时,代码将选择我选择的值(名称的ID),然后将其与第四个参数中的ID匹配,以显示艺术家的名称。是这样吗?