尝试通过收集电话号码来扩展ProDinner Chef课程



我正在尝试通过向Chef添加电话号码来扩展ProDinner。

  1. 厨师输入视图模型:

    public class ChefInput :Input
    {  
        public string Name { get; set; }
        public ChefInput()
        {
            PhoneNumberInputs = new List<PhoneNumberInput>(){
                                new PhoneNumberInput()
                            };}
        public IList<PhoneNumberInput> PhoneNumberInputs { get; set; }
    }
    
  2. 电话输入视图模型:

    public class PhoneNumberInput :Input
    {
        public string Number { get; set; }
        public PhoneType PhoneType { get; set; } <-- an enum in Core project
    }
    
  3. Chef Create.cshtml 文件:

       @using (Html.BeginForm())
       {
        @Html.TextBoxFor(o => o.Name)
        @Html.EditorFor(o => o.PhoneNumberInputs)
       }
    
  4. 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设置,但这就是我的意思。

最新更新