Ich habe den folgenden Code:Eindeutiger Name auf Name-Attribut asp.net Mvc in for-Schleife
foreach (var questionGroups in Model.ClientQuestionGroups)
{
for (var j = 0; j < questionGroups.Questions.Count; j++)
{
<div class="test">
@Html.HiddenFor(m => m.QuestionAnswers[j].FormAnswerId)
@Html.HiddenFor(m => m.QuestionAnswers[j].QuestionId)
@foreach (var alternative in questionGroups.Questions[j].QuestionAlternatives)
{
if (alternative.NestedQuestion != null)
{
nestedQuestions.Add(alternative.NestedQuestion);
}
}
</div>
}
if (nestedQuestions.Count > 0)
{
for (var i = 0; i < nestedQuestions.Count; i++)
{
<div class="nestedQuestion">
@Html.HiddenFor(m => m.QuestionAnswers[i].FormAnswerId)
@Html.HiddenFor(m => m.QuestionAnswers[i].QuestionId)
@foreach (var alt in nestedQuestions[i].QuestionAlternatives)
{
@Html.DisplayFor(m => alt.AlternativeText)
@Html.RadioButtonFor(m => m.QuestionAnswers[i].AlternativeId, alt.Id, new { @class = "questionAlternative" });
}
</div>
}
}
}
Dies erzeugt die folgende html:
<div class="test">
<input id="QuestionAnswers_0__FormAnswerId" type="hidden" value="00000000-0000-0000-0000-000000000000" name="QuestionAnswers[0].FormAnswerId" data-val-required="Fältet FormAnswerId krävs." data-val="true">
<input id="QuestionAnswers_0__QuestionId" type="hidden" value="427d0a77-b7b7-48b0-956a-28794145e0da" name="QuestionAnswers[0].QuestionId" data-val-required="Fältet QuestionId krävs." data-val="true">
Yes
<input id="QuestionAnswers_0__AlternativeId" class="questionAlternative" type="radio" value="aabf2548-abca-4cb5-89d8-759f2d71be01" nestedquestion="895015c0-2bf0-4c5a-95c9-8d4b29671bf7" name="QuestionAnswers[0].AlternativeId" data-val-required="Fältet AlternativeId krävs." data-val="true">
No
<input id="QuestionAnswers_0__AlternativeId" class="questionAlternative" type="radio" value="91b220dc-3ef3-45a9-8369-dc1e4e2530a8" nestedquestion="" name="QuestionAnswers[0].AlternativeId">
</div>
<div class="nestedQuestion questionDiv">
<p>Testar2</p>
<p>Testar2</p>
<input id="QuestionAnswers_0__FormAnswerId" type="hidden" value="00000000-0000-0000-0000-000000000000" name="QuestionAnswers[0].FormAnswerId">
<input id="QuestionAnswers_0__QuestionId" type="hidden" value="427d0a77-b7b7-48b0-956a-28794145e0da" name="QuestionAnswers[0].QuestionId">
Yes
<input id="QuestionAnswers_0__AlternativeId" class="questionAlternative" type="radio" value="aabf2548-abca-4cb5-89d8-759f2d71be01" name="QuestionAnswers[0].AlternativeId">
No
<input id="QuestionAnswers_0__AlternativeId" class="questionAlternative" type="radio" value="91b220dc-3ef3-45a9-8369-dc1e4e2530a8" name="QuestionAnswers[0].AlternativeId">
</div>
Wie Sie sehen können, die ID- Attribut und Name-Attribut hat den gleichen Wert/Name. Ich will das nicht. Ich möchte, dass das erste div 0
ist, und das geschachtelte Frage div zu 1
und so weiter sein soll. Ich weiß, dass dies geschieht, weil es sich in der gleichen Schleife befindet.
Ich kann nicht ganz herausfinden, wie dieses Namensschema zu lösen ist. Wer kann mich in die richtige Richtung drängen?
Sie Zählerwerte für Ihre Loops zu verwenden versuchen, und dann zählt als Suffix Name für div verwenden .. – NMathur
@NMathur: Können Sie mir ein Beispiel geben? – Bryan
Warum wird m.QuestionAnswers zweimal in zwei verschiedenen Abschnitten verwendet? Sind sie jeweils Teil einer anderen Form? –