2013-04-07 86 views
0

我是一個新手,可能錯過了一些明顯的東西。當創建新的「航班」時,下拉列表返回值,例如「2」,而不是所需的文本,例如「通訊」。斷點和手錶驗證「FlightType」和「ViewBag」包含正確的信息。任何建議是最受歡迎的。dropdownlist返回值,而不是文本

型號:Flight.cs

public class Flight 
{ 
    [Key] 
    public int FlightID { get; set; } 

    public int FlightTypeID { get; set; } 
    public string FlightTypeEntry { get; set; } 
} 

型號:FlightType.cs

public class FlightType 
{ 
[Key] 
public int FlightTypeID { get; set; } 
public string FlightTypeEntry { get; set; } 
} 

DAL:FlightInitializer.cs

var flighttypes = new List<FlightType 
{ 
new FlightType { FlightTypeEntry = "Regular" }, 
new FlightType { FlightTypeEntry = "Comm" } 
}; 
flighttypes.ForEach(e => context.FlightType.Add(e)); 
context.SaveChanges(); 

控制器:FlightController.cs

// GET: /Flight/Create 
public ActionResult Create() 
{ 
ViewBag.FlightVB = new SelectList(db.FlightType, "FlightTypeID", 
    "FlightTypeEntry"); 
return View(); 
} 

// POST: /Flight/Create 
[HttpPost] 
public ActionResult Create(Flight flight) 
{ 
if (ModelState.IsValid) 
    { 
    db.Flight.Attach(flight); 
    db.Entry(flight).State = EntityState.Modified; 
    db.Flight.Add(flight); 
    db.SaveChanges(); 
    return RedirectToAction("Index"); 
} 

ViewBag.FlightTypeVB = new SelectList(db.FlightType, "FlightTypeID" 
    "FlightTypeEntry"); 
return View(flight); 

瀏覽:Flight.Create.cshtml

<div class="editor-field"> 
    @Html.DropDownList(「FlightTypelID", <SelectList>)ViewBag.FlightTypeVB) 
</div> 

回答

0

對飛行物體創建HttpPost可能沒有被正確填充B/C的下拉列表只會返回所選項目的值 - 您的案例中的值是「FlightTypeID」。如果你想改變它返回文本值「FlightTypeEntry」,那麼你可以改變

ViewBag.FlightVB = new SelectList(db.FlightType, "FlightTypeID", "FlightTypeEntry"); 

ViewBag.FlightVB = new SelectList(db.FlightType, "FlightTypeEntry", "FlightTypeEntry"); 

我不知道這將是一件好事,但。無論哪種方式,它都不會完全填充後貼上的Flight對象。爲此,您可能希望使用隱藏字段作爲輸入的flightID,並找出與「FlightTypeValue」相對應的「FlightTypeID」,反之亦然。