使用值填充下拉列表

时间:2012-12-26 12:59:48

标签: asp.net-mvc-3

你好我正试图让我的下拉列表工作,但它似乎比预期更难。我有3个域名类成员,租赁和电影。我的想法是制作一个下拉列表,显示特定用户租用的电影,当我在下拉列表中选择一个电影并提交它时,我将返回所选的电影,我可以将bool IsInStock设置为true。

所以我做了一个viewmodel和一个控制器动作,但是想要一些帮助如何继续这个。现在我得到一个用户“Jan”租用电影的下拉列表,但是当我点击提交时,我想获取值以便将IsInStock设置为true。我知道我需要方法来处理POST值,但我正在努力使这项工作成为第一个。

public class Member
    {
        public virtual int MemberId { get; set; }
        public virtual string LastName { get; set; }
        public virtual List<Rental> Rentals { get; set; }
    }
 public class Rental
    {
        public virtual int RentalId { get; set; }
        public virtual int MovieId { get; set; }
        public virtual Movie Movie { get; set; }
        public virtual int MemberId { get; set; }
        public virtual Member Member { get; set; }
    }
  public class Movie
  {
    public virtual int MovieId { get; set; }
    public virtual string Name { get; set; }
    public virtual bool IsInStock { get; set; }
  }
  public class RentalsViewModel
    {
        // Need something here.
        public IEnumerable<SelectListItem> RentedMovies { get; set; }
    }
    public ActionResult ReturnMovie()
    {

        var rentedmovies = db.Rentals.Where(r => r.Member.Name == "Jan").ToList();

        var model = new RentalsViewModel()
        {

            RentedMovies = rentedmovies.Select(x => new SelectListItem
            {
                Value = x.MovieId.ToString(),
                Text = x.Movie.Name
            })
        };

        return View(model);
    }

// In the View

       @using (Html.BeginForm())
{
@Html.DropDownListFor(x => x.RentedMovies, //Something here);
<p>
<input type="submit" value="Save" />
</p>                                                                  
}

1 个答案:

答案 0 :(得分:0)

这里的第一个参数:

@Html.DropDownListFor(x => x.RentedMovies, //Something here);

必须为int,因为您会将此值发送到服务器:

public virtual int MovieId { get; set; }

因此,您的示例可能如下所示:

@Html.DropDownListFor(x => x.RentedMovieId, Model.RentedMovies);

(将属性RentedMovieId添加到RentalsViewModel

相关问题