2012-05-24 2 views
0

Chef에게 전화 번호를 추가하여 ProDinner를 연장하려고합니다.전화 번호 컬렉션이있는 ProDinner Chef 수업을 연장하려고합니다.

  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. 요리사 Create.cshtml 파일 :

    @using (Html.BeginForm()) 
        { 
    
        @Html.TextBoxFor(o => o.Name) 
        @Html.EditorFor(o => o.PhoneNumberInputs) 
        } 
    
  4. PhoneNumberInput.cshtm EditorTemplate 폴더에있는 L :

    @using (Html.BeginCollectionItem("PhoneNumberInputs")) 
    { 
        @Html.DropDownListFor(m => m, new SelectList(Enum.GetNames(typeof(PreDefPhoneType)))) 
        @Html.TextBoxFor(m => m.Number) 
    } 
    

디버깅하고 나는 그것을에서 Crudere 파일에 작성 중지는 전화 컬렉션이 null입니다.

누구든지 아이디어가 있습니까? 미리 감사드립니다.

+0

ChefInput (목록 )에 매우 복잡한 개체가 있고,보기 모델에이 항목이 없어도 prodinner와 아무 관계가 없습니다.이 viewmodel을 사용하면 한 페이지 앱을 만들 수 있습니다. 같은 결과 – Omu

+0

당신이 IEnumerable 전화 번호를 입력 할 수있는 요리사에게 많은 전화 번호를 추가하고 싶다면 가능한 한 간단하게 유지하십시오. 전화 번호 (phonetype)에 대한 속성이 필요하면 여기를보아야합니다. : http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx – Omu

답변

1

조,

당신은 컨트롤러 로직을 표시하지 않습니다하지만 난 당신이 PhoneNumberInputs 뷰 모델을 채우는하지 않는 때문에 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); 
} 

, 그러나 이것은 무슨 의미가 있습니다 : 등등 prodinner 컨트롤러가이 라인 알송처럼 보이지만 뭔가 모르겠어요.

+0

나는 표준 요리사 컨트롤러 ProDinner를 사용하고 있습니다. 당신이 의미하는 바를 예를 들어 줄 수 있습니까? : "PhoneNumberInputs ViewModel을 채우는 중"? –

+0

위의 조 편집 편. eprodinner 저장소와 조금 다를 수 있으므로 조금 주위를 생각해야합니다. –

+0

감사합니다. Jim. 모든 Crud가 중앙 loc (crudere)에있는 컨트롤러에서 이러한 메서드를 만들 수 없습니다. 그리고 ProDinner의 사람들은 조언을 제공하는 데 너무 열렬한 것처럼 보이지 않습니다. 요청에 대한 한 문장의 주석은 "StackOverflow에 질문 게시"입니다. 나는 그들의 제품에 너무 많은 시간을 투자해서 죄송합니다. –