将Html.DropDownListFor()与SelectList一起使用

时间:2011-05-04 15:09:56

标签: asp.net asp.net-mvc-3

在ASP.Net MVC 3中使用Html.DropDownListFor帮助程序时填充SelectList的正确方法是什么?

我基本上有一个“创建”表单,我想为特定字段指定条目值。例如,它是一个电影数据库,我希望能够输入一个类型,但我不希望用户能够输入他们喜欢的内容,所以我假设一个SelectList是最好的答案?

一种有效的方法是使用静态方法创建一个新类,以返回SelectList:

public class Genres
{
    public static List<string> GetGenres()
    {
        List<string> myGenres = new List<string>();
        myGenres.Add("Comedy");
        myGenres.Add("Romantic Comedy");
        myGenres.Add("Sci-Fi");
        myGenres.Add("Horror");

        return myGenres;
    }
}

然后可以这样使用:

    <div class="editor-field">
        @Html.DropDownListFor(model => model.Genre, new SelectList(OLL.Models.Genres.GetGenres()))
    </div>

它似乎不是正确/最简单的方法吗?我想我在这里遗漏了一些明显的东西......

感谢您提供的任何帮助。

2 个答案:

答案 0 :(得分:0)

这是一个简单的selectList样式,我一直用它来下载,希望你能找到这个有用的。

 ViewBag.AlbumListDD = from c in db.Query<DatabaseEntities.VenuePhotoAlbum>("WHERE VenueId = @0", VenueId)
                      select new SelectListItem
                      {
                         Text = c.Name,
                         Value = c.Id.ToString()
                      };

在我看来:

@Html.DropDownList("AlbumId", (IEnumerable<SelectListItem>)ViewBag.AlbumListDD, new { id = "ChangeAlbum" })

希望您能找到这个有用的,因为这是一个数据库路径。我通常喜欢在数据库中拥有所有这些信息,这样用户可以随意动态添加/删除和更改这些下拉项。在删除类型时,幕后需要进行一些SQL工作,但事实证明这对我来说非常成功和快速。

答案 1 :(得分:0)

 var og = (from s in DB.Products
 select new SelectListItem
  {
        Text = s.ProductName,
         Value = s.ProductID.ToString()
  }); 
  ViewBag.lstProducts = new SelectList(getproductname, "ProductID", "ProductName");
<p>
    @Html.DropDownList("AlbumId", (IEnumerable<SelectListItem>)ViewBag.lstProducts, new { @id = "drp" });
</p>