我现在真的很难过。我已经坚持这个问题好几天了,坦率地说,我已经厌倦了它。
我有这个数据库表:https://gyazo.com/9d1b014ecdba1e244c2f6957b6d9397c
(注意FlightsTable
)
我的目标是根据“离开”部分中的值填充下拉菜单。
我尝试过很多东西,但我仍然无法掌握它。
这是我的模特:
public class FlightModel
{
public int FlightID { set; get; }
public string Departure { set; get; }
public string Arrival { set; get; }
public int NumberOfSeats { set; get; }
public int NumberOfFlights { set; get; }
}
控制器:
public ActionResult BookFlight()
{
return View();
}
FlightDBEntities(来自FlightsDBModel)
namespace Project_v3.Models
{
using System;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
public partial class FlightsDBEntities : DbContext
{
public FlightsDBEntities()
: base("name=FlightsDBEntities")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
public DbSet<FlightsTable> FlightsTables { get; set; }
}
}
文件的屏幕截图:http://gyazo.com/31b447387f349fbbe541f44a358c3096
如何在BookFlight的视图中进行下拉列表工作?我正在努力解决这个一步一步的解决方案,这样我就能理解每一步都会受到高度赞赏。拜托,谢谢你。
答案 0 :(得分:0)
有几种方法可以做到这一点,这是一个例子:
您需要实际创建选择列表的内容:
public SelectList GetAsSelectList()
{
var depts = from f in db.FlightsTables
select new SelectListItem
{
Value = f.Departure,
Text = f.Departure
};
return new SelectList(depts, "Value", "Text");
}
如果偏离在他们自己的表格中,那么最好从那里选择它们,使用Id
主键字段作为选择列表的value
字段
我认为选择列表将显示在与FlightModel
相同的页面上。如果是这种情况,那么您的模型需要选择列表的属性:
public SelectList DepartureList { get; set; }
您的控制器方法需要创建一个FlightModel实例,用您想要显示的内容填充它(包括选择列表)并将其传递给视图:
public ActionResult BookFlight()
{
var model = new FlightModel
{
DepartureList = GetAsSelectList()
};
return View(model);
}
根据您希望用户对选择列表的操作,您可以在视图中显示它:
@Html.DropDownList("Departure", Model.DepartureList)
答案 1 :(得分:0)
在您的控制器中,选择不同的离场
IEnumerable<string> departures = db.FlightsTables.Select(f => f.Departure).Distinct();
并分配给ViewBag
属性(或者更好,使用带有SelectList
属性的视图模型)
ViewBag.DepartureList = new SelectList(departures);
并在视图中(不确定要绑定的属性 - 您还没有显示Booking
的模型)
@Html.DropDownListFor(m => m.YourProperty, (SelectList)ViewBag.DepartureList, "-Please select-")
我怀疑您可能需要修改航班表。您有一个ID列,但有一列列表中的航班数量。当然,您需要有关每个航班的出发和到达时间的信息吗?
修改
除了评论之外,您的预订模式可能类似于。
public class BookingVM
{
public List<FlightModel> FlightList { get; set; } // to display available flights
public string Departure { get; set; } // bind to DepartureList
public int FlightID { get; set; } // bind to FlightID in a dropdown that displays the arrival locations
public int Seats { get; set; } // number of seats booked
public SelectList DepartureList { get; set; } // unique departures
}
您需要处理离境下拉列表中的.change()
事件,使用ajax将选定的出发传递给控制器方法,该方法返回flightID和到达位置(可能还有每个航班的可用座位数)并使用它来填充第二个下拉列表(绑定到FlightID
并显示到达位置)。