0

我第一次尝试写入模型以在我的视图中使用:第一次写入模型时,我得到一个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++;
    }
}
4

3 回答 3

2

您无法使用_model.AddQuestAnswModel[c],因为您从未将任何项目添加到您的列表中。

取而代之的是,创建一个新对象并设置其值,然后将该项目添加到您的列表中。

像这样的东西:

AdditionalQuestionAnswerModel newItem = new AdditionalQuestionAnswerModel();

//set the values here to newItem

_model.AddQuestAnswModel.Add(newItem);
于 2012-08-29T11:42:53.947 回答
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);
}
于 2012-08-29T11:43:28.210 回答
0

Ir 表示您的指定位置没有项目_model.AddQuestAnswModel,并且从您的代码中,我看到它_model.AddQuestAnswModel仅以开头new List<AdditionalQuestionAnswerModel>(),因此它不包含项目(除非您在构造函数中执行此操作)。

你需要像这样填写它:

_model.AddQuestAnswModel.Add(item);
于 2012-08-29T11:44:23.963 回答