我正在尝试通过向Chef添加电话号码来扩展ProDinner。
-
厨师输入视图模型:
public class ChefInput :Input { public string Name { get; set; } public ChefInput() { PhoneNumberInputs = new List<PhoneNumberInput>(){ new PhoneNumberInput() };} public IList<PhoneNumberInput> PhoneNumberInputs { get; set; } }
-
电话输入视图模型:
public class PhoneNumberInput :Input { public string Number { get; set; } public PhoneType PhoneType { get; set; } <-- an enum in Core project }
-
Chef Create.cshtml 文件:
@using (Html.BeginForm()) { @Html.TextBoxFor(o => o.Name) @Html.EditorFor(o => o.PhoneNumberInputs) }
-
EditorTemplate 文件夹中的 PhoneNumberInput.cshtml:
@using (Html.BeginCollectionItem("PhoneNumberInputs")) { @Html.DropDownListFor(m => m, new SelectList(Enum.GetNames(typeof(PreDefPhoneType)))) @Html.TextBoxFor(m => m.Number) }
调试时,我在 Crudere 文件中创建时将其停止,电话集合为空。
有人有什么想法吗?提前谢谢。
Joe,
您没有显示控制器逻辑,但我感觉您正在为空,因为您没有填充PhoneNumberInputs
ViewModel。从我所看到的,您所做的只是在模型中更新列表。确保您从数据库中的控制器中填写此"列表"(使用适当的值),我确信一切都会按计划工作。
[编辑] - 回答评论。 不知道 prodinner 控制器等是什么样子的,但有些东西 alsong 这些台词:
public ActionResult Edit(int id)
{
var viewModel = new ChefInput();
viewModel.ChefInput = _context.GetById<ChefModel>(id);
viewModel.PhoneNumberInputs = _context.All<PhoneNumberInput>();
return View(viewModel);
}
正如我所说,不确定Prodinner设置,但这就是我的意思。