2012-12-26 182 views
0

您好,我試圖讓我的下拉列表能夠正常工作,但似乎比預期的要難。我有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>                 
} 

回答

0

第一個參數的位置:

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

必須int,因爲你將這個值發送到服務器:

public virtual int MovieId { get; set; } 

所以,你的例子看起來是這樣:

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

(添加屬性RentedMovieIdRentalsViewModel