2013-04-07 3 views
0

Я новичок и, вероятно, не вижу ничего очевидного. При создании нового «Полета» выпадающий список возвращает значение, например. «2», а не желаемый текст, например. «Comm». Точки останова и часы подтверждают, что «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, вероятно, не заполнение правильно б/с в списке только вернет значение выбранного элемента - значение в вашем случае равно «FlightTypeID». Если вы хотите изменить его, чтобы вернуть текстовое значение «FlightTypeEntry», то вы могли бы изменить

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

в

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

Я не уверен, что это будет хорошая вещь, хотя. В любом случае, он не собирается полностью заполнять объект полета на обратной стороне. Для этого вы можете использовать скрытые поля для входного идентификатора FlightID и либо определить «FlightTypeID», что соответствует «FlightTypeValue», или наоборот.

Смежные вопросы