いくつかの投稿を読みましたが、これを解決するのはまだ難しいと思います。私の問題は、私のアクションがバインドされたリストから値の一部しか読み取らないことです。これは、リストをビューに送信する方法です。
public ActionResult RegisterSurvey()
{
RegisterSurveyModel model = new RegisterSurveyModel();
var questions = new List<QuestionModel>();
var survey = EFSurvey.Survey.FirstOrDefault();
survey.QuestionSurvey
.Where(x => x.AuditingDeleted == false)
.Where(x => x.Active == true).ToList().ForEach((item) =>
{
var questionModel = new QuestionModel();
ModelCopier.CopyModel(item, questionModel);
questionModel.Answer = string.Empty;
questions.Add(questionModel);
});
model.Questions = questions;
return View(model);
}
これは私のモデルです:
public class RegisterSurveyModel
{
public List<QuestionModel> Questions { get; set; }
}
public class QuestionModel
{
public int QuestionSurveyID { get; set; }
public string Question { get; set; }
public string Answer { get; set; }
public bool Suggestion { get; set; }
}
これは私の見解です:
<div class="SiteSurveyContainer">
@using (Html.BeginForm())
{
<div class="SurveyUp">
@for (int i = 0; i < Model.Questions.Count(); i++)
{
if (!Model.Questions[i].Suggestion)
{
<p>@Model.Questions[i].Question</p>
@Html.HiddenFor(x => Model.Questions[i].QuestionSurveyID);
@Html.TextBoxFor(x => Model.Questions[i].Answer, new { @class = "surveyBox" });
}
}
</div>
<div class="SurveyBottom">
<div class="line">
</div>
<p>
Suggestions</p>
@for (int i = 0; i < Model.Questions.Where(x => x.Suggestion == true).Count(); i++)
{
@Html.HiddenFor(x => Model.Questions[i].QuestionSurveyID);
@Html.TextAreaFor(x => Model.Questions[i].Answer, new { @class = "surveyTextArea" })
}
</div>
<div class="surveyBottomButton">
<input type="submit" value="Submit Results" />
</div>
}
ここまでは順調ですね。とにかく、アンケートの質問にすべて回答すると、最初の 4 つの回答しか得られません... 変です。なぜそれが起こっているのか知っている人はいますか?