0

いくつかの投稿を読みましたが、これを解決するのはまだ難しいと思います。私の問題は、私のアクションがバインドされたリストから値の一部しか読み取らないことです。これは、リストをビューに送信する方法です。

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 つの回答しか得られません... 変です。なぜそれが起こっているのか知っている人はいますか?

ここに画像の説明を入力

4

1 に答える 1

2

同じ名前の同じフォーム内に複数の入力コントロールがあります。

提案された質問はすべての質問のサブセットであるため、同じフォームで 2 回繰り返されています。これは ModelBinder を無効にするため、受信アクションはおそらく、繰り返されていない質問のみを表示します。

于 2012-05-17T15:50:09.307 に答える