2016-02-29 92 views
3

我有一個DropDownListFor,它爲我顯示Events的列表。我正在嘗試POST返回所選eventIDEventId總是回來作爲0(請忽略不服務層或倉庫的混亂,它只是一個樣本項目。)爲什麼我的DropDownListFor填充我的ID屬性,當我POST?

我的模型:

public List<SelectListItem> Events { get; set; } 

public int EventId { get; set; } 

筆者認爲:

@Html.DropDownListFor(m=> m.EventId, Model.Events, new { @class = "form-control" }) 

這是怎麼了在控制器中填入Events

[HttpGet] 
public ActionResult Create() 
{ 
    //Setting up Events for the DropDownListFor 
    var events = db.Events.ToList().Select(e => new SelectListItem 
    { 
     Text = e.EventName, 
     Value = e.EventId.ToString() 
    }).ToList(); 

    return View(new User {Events = events }); 
} 

在我POST

[HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult Create([Bind(Include = "UserId,FirstName,LastName,Age,VehicleMake,VehicleModel,VehicleYear,AreGuestsAttending,TotalGuests")] User user) 
    { 
     if (ModelState.IsValid) 
     { 
      db.Users.Add(user); 
      db.SaveChanges(); 

      var enrollUserForEvent = new Enrollment 
      { 
       UserId = user.UserId, 
       EventId = user.EventId 
      }; 

      _enrollmentController.Create(enrollUserForEvent); 

      return RedirectToAction("Index", "Event"); 
     } 

     return View(user); 
    } 

我試着與幾個不同的東西玩耍,如:

var eventIdString = user.Events.First(e => e.Selected == true).Value; 
    int eventId = Int32.Parse(eventIdString); 

但在上述情況下user.Eventsnull

在玩了四周,四處搜尋後,我找不到任何關於我可能在這裏做錯了什麼。其他所有東西都回復得很好,所以我不確定爲什麼我沒有讓EventId回來一切。任何幫助,將不勝感激!

回答

2

的問題是在這裏

Bind(Include ="...") 

你還應該包括那裏的EventId。如果從這個EventId失誤的userEventId財產獲得的它的默認值,這是0也包括給你的Bind語句,那麼當user模型將被創建將採取EventId值從數據你POST和值你的帖子會被正確設置。

+0

不客氣!我很高興我幫助:) – Christos

相關問題