0

Chef に電話番号を追加して、ProDinner を拡張しようとしています。

  1. ChefInput ビュー モデル:

    public class ChefInput :Input
    {  
        public string Name { get; set; }
    
        public ChefInput()
        {
            PhoneNumberInputs = new List<PhoneNumberInput>(){
                                new PhoneNumberInput()
                            };}
    
        public IList<PhoneNumberInput> PhoneNumberInputs { get; set; }
    }
    
  2. PhoneInput ビュー モデル:

    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 ファイルの作成で停止すると、Phone コレクションが null になります。

誰にもアイデアはありますか?前もって感謝します。

4

1 に答える 1

1

ジョー、

コントローラーのロジックは表示されませんが、PhoneNumberInputsViewModel にデータを入力していないため、null になっているように感じます。私が見る限り、あなたがしているのはモデルのリストを新しくすることだけです。データベースからコントローラーにこの「リスト」を入力してください (適切な値を使用)。すべてが計画どおりに機能することを確認してください。

[編集] - コメントへの回答。prodinnerコントローラーなどがどのように見えるかはわかりませんが、これらの行にも何かがあります:

public ActionResult Edit(int id)
{
    var viewModel = new ChefInput();
    viewModel.ChefInput =  _context.GetById<ChefModel>(id);
    viewModel.PhoneNumberInputs = _context.All<PhoneNumberInput>();
    return View(viewModel);
}

私が言ったように、プロディナーのセットアップはよくわかりませんが、これは私が意味したことです.

于 2012-05-24T19:27:09.447 に答える