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 に答える