0

我將問題列表添加到視圖模型中,該視圖模型將該屬性作爲列表並將其發送到視圖。我可以做一個foreach循環並在屏幕上顯示所有問題,但是當我單擊表單上的提交併將該視圖模型發送給控制器問題列表爲空時,我不確定如何將這些問題添加回視圖模型。通過視圖模型從表單提交視圖中獲取問題列表

將列表添加到虛擬機。

AddEditListingViewModel AELVM = new AddEditListingViewModel 
     { 
      ListingQuestions = new List<ListingDetailQuestionViewModel>(), 
      States = states, 
      Cities = cities, 
      Agents = agents, 
     }; 

     foreach (ListingDetailQuestionViewModel question in questions) 
     { 
      ListingDetailQuestionViewModel LDQVM = new ListingDetailQuestionViewModel 
      { 
       QuestionGuid = question.QuestionGuid, 
       QuestionNumber = question.QuestionNumber, 
       Question = question.Question, 
       QuestionSideNotes = question.QuestionSideNotes 
      }; 

      AELVM.ListingQuestions.Add(LDQVM); 
     } 

     return View("AddNewListing", AELVM); 

在視圖中。

@foreach (ListingDetailQuestionViewModel value in Model.ListingQuestions) 
        { 
         @Html.Label(value.Question + "?", new {Id = value.QuestionGuid}) 
         @Html.Label("Answer: ")@Html.TextBox("Answer", "", new {Id = value.QuestionGuid}) 
         <br/> 
        } 

視圖是對此視圖模型的強類型。 我可以打開列表並查看值,但是當提交表單時,所有問題均爲空。

+0

的線條有從模型的值回傳給它必須包含在用於輔助(textboxfor控制器,dropdownlistfor等) –

+0

這是模型中的一個列表,我不知道如何打開該列表並仍然保留在模型中。 – NNassar

回答

0

閱讀模型綁定到列表 - http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx

您需要使用助手對於擴展方法來生成帶索引名稱的html元素。

@for (var i = 0; i < Model.ListingQuestions.Count; i++) 
{ 
    @Html.HiddenFor(m => Model.ListingQuestions[i].QuestionGuid); 
    @Html.LabelFor(m => Model.ListingQuestions[i].Answer); 
    @Html.TextBoxFor(m => Model.ListingQuestions[i].Answer) 

有一個看看HTML這應該生產的東西沿着

<input name="ListingQuestions[0].QuestionGuid" type="hidden" value="..." /> 
....label 
<input name="ListingQuestions[0].Answer" type="text" value="" /> 
+0

這是最終的代碼。 @for(var i = 0; i Model.ListingQuestions [i] .QuestionGuid) @ Html.HiddenFor(m => Model.ListingQuestions [I]。提問) @ Html.DisplayFor(M => Model.ListingQuestions [I]。提問)
@ Html.TextBoxFor(M => Model.ListingQuestions [I] .Answers.Answer)
} – NNassar