【发布时间】:2020-01-09 11:46:02
【问题描述】:
我正在尝试使用视图模型而不是直接使用数据来完成我正在尝试做的大部分事情。
这样的事情之一是尝试在航班上预订乘客/客户。数据使用两个键/ID,乘客 ID 和航班 ID。
现在视图模型看起来像这样:
namespace WebSite.Models.PassengerViewModels
{
public class FlightBookingViewModel
{
[Display(Name = "Passenger ID ")]
public int IdC { get; set; }
[Display(Name = "E-mail Address ")]
[Required]
[DataType(DataType.EmailAddress)]
public string Email { get; set; }
[Display(Name = "Flight ID ")]
public int IdF { get; set; }
[Display(Name = "Flight Name ")]
public int Name { get; set; }
}
}
但创建预订的脚手架代码如下所示:
public IActionResult Create()
{
ViewData["IdC"] = new SelectList(_context.Passengers, "Id", "Email");
ViewData["IdF"] = new SelectList(_context.Flights, "Id", "Name");
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create([Bind("IdC,IdF,Attended")] FlightBooking model)
{
if (ModelState.IsValid)
{
_context.Add(model);
await _context.SaveChangesAsync();
return RedirectToAction(nameof(Index));
}
ViewData["IdC"] = new SelectList(_context.Customers, "Id", "Email", model.IdF);
ViewData["IdF"] = new SelectList(_context.Events, "Id", "Name", model.IdE);
return View(model);
}
那么创建的视图页面是这样的:
@model WebSite.Data.FlightBooking
@{
ViewData["Title"] = "Create";
}
<h2>Create</h2>
<h4>FlightBooking</h4>
<hr />
<div class="row">
<div class="col-md-4">
<form asp-action="Create">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group">
<label asp-for="IdC" class="control-label"></label>
<select asp-for="IdC" class ="form-control" asp-items="ViewBag.IdC"></select>
</div>
<div class="form-group">
<label asp-for="IdF" class="control-label"></label>
<select asp-for="IdF" class ="form-control" asp-items="ViewBag.IdF"></select>
</div>
<div class="form-group">
<div class="checkbox">
<label>
<input asp-for="Attended" /> @Html.DisplayNameFor(model => model.Attended)
</label>
</div>
</div>
<div class="form-group">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</form>
</div>
</div>
<div>
<a asp-action="Index">Back to List</a>
</div>
@section Scripts {
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
}
现在我尝试在其中实现视图模型,但它不会将数据带入下拉列表。我不确定如何让它发挥作用。
【问题讨论】:
-
嗨@SSM,关于这个案例的任何更新?你达到要求了吗?
-
@FeiHan 是的,对不起。我实际上从我的一位导师那里得到了答案。我已经发布了答案以说明我做了什么以及为什么。
标签: c# html asp.net-core asp.net-core-mvc viewmodel