2012-08-29 23 views
0

當我試圖寫一個模型首次在我的視圖中使用:我第一次寫信給模型,我得到一個ArgumentOutOfRangeException。在第一次寫ArgumentOutOfRangeException寫入模式

收到錯誤數組:

private IAdditionalQuestionsService _service; 
private SelectedAdditionalQuestionAnswerModel _model; 
private void InitializeController() 
{ 
    _service = GetObject<IAdditionalQuestionsService>(); 
    //GetPageHeaderText(inst); 
    ViewBag.GetPageTitle = "Additional Questions"; 
} 

[HttpGet] 
public virtual ActionResult Edit() 
{ 
    Institution inst = _service.GetInstitution(State.GetInstitutionRecordId()); 
    _model = GetObject<SelectedAdditionalQuestionAnswerModel>(); 
    _model.AddQuestAnswModel = new List<AdditionalQuestionAnswerModel>(); 
    GetPageConfiguration1(inst); 
    return View(_model); 
} 

AdditionalQuestionAnswerModel m = GetObject<AdditionalQuestionAnswerModel>(); 
int c = 0; 
foreach (var x in inst.AdditionalQuestions) 
{ 
    foreach (var y in x.AdditionalQuestionAnswers) 
    { 
     // Error is happening on next line ************* 
     _model.AddQuestAnswModel[c].QuestionText = x.QuestionText; 
     _model.AddQuestAnswModel[c].InstitutionId = x.InstitutionId; 
     _model.AddQuestAnswModel[c].AdditionalQuestionId = x.Id; 
     _model.AddQuestAnswModel[c].AnswerText = y.AnswerText; 
     _model.AddQuestAnswModel[c].IsSelected = false; 
     c++; 
    } 
} 

回答

2

不能使用_model.AddQuestAnswModel[c]因爲你永遠不添加任何項目到列表中。

取而代之的是,創建一個新的對象,並設置其值,然後將項目添加到列表中。

事情是這樣的:

AdditionalQuestionAnswerModel newItem = new AdditionalQuestionAnswerModel(); 

//set the values here to newItem 

_model.AddQuestAnswModel.Add(newItem); 
2

你首先實例列表

_model.AddQuestAnswModel = new List<AdditionalQuestionAnswerModel>(); 

然後您嘗試訪問的第一個元素

_model.AddQuestAnswModel[c] // c == 0 

不添加任何元素列表。

通過指數試圖訪問列表之前添加的元素,或者更簡單:

foreach (var y in x.AdditionalQuestionAnswers) 
{ 
    AdditionalQuestionAnswerModel newObj = new AdditionalQuestionAnswerModel 
    { 
     QuestionText = x.QuestionText; 
     InstitutionId = x.InstitutionId; 
     AdditionalQuestionId = x.Id; 
     AnswerText = y.AnswerText; 
     IsSelected = false; 
    }; 

    _model.AddQuestAnswModel.Add(newObj); 
} 
0

銥意味着你_model.AddQuestAnswModel在指定postition,並從你的代碼,我看有沒有項目_model.AddQuestAnswModel只用new List<AdditionalQuestionAnswerModel>()發起的,所以它不包含的項目(除非你在構造器這樣做)。

您需要填寫它像這樣:

_model.AddQuestAnswModel.Add(item);