私の ASP.NET WebForms の経験では、これが初めての MVC プロジェクトです。
これは、メカニズムが許すとは思わない問題ですが、間違っている可能性があります。a の中に a
を持つことはそれほど簡単ではありません。
まず第一に、ドロップダウンは私が渡した値を選択しません ( ) -- 下の画像ですべて表示されていることに注意してください。これは、ロードした正しい値が選択されていないためです。
次に、それらはすべて同じフォーム フィールド名になるため、コントローラーはどのようにしてそれらを対応する List<> に戻すことができるでしょうか?
これを1時間見て、同様の例を検索しましたが、見つかりません。
ハードコードされたハックや回避策ではない良い解決策は何ですか?DropDownListFor
@foreach
m => question.Answer
No Answer
モデル:
public List<SelectListItem> PossibleAnswers
{
get
{
return new List<SelectListItem>()
{
new SelectListItem() { Text = "No Answer", Value = "0" },
new SelectListItem() { Text = "Very Bad", Value = "1" },
new SelectListItem() { Text = "Bad", Value = "2" },
new SelectListItem() { Text = "Average", Value = "3" },
new SelectListItem() { Text = "Good", Value = "4" },
new SelectListItem() { Text = "Very Good", Value = "5" }
};
}
}
public enum SurveyAnswer
{
NoAnswer,
VeryBad,
Bad,
Average,
Good,
VeryGood
}
public class SurveyQuestionClass
{
public int ID { get; set; }
public string Question { get; set; }
public SurveyAnswer Answer { get; set; }
}
public List<SurveyQuestionClass> QuestionsAnswers { get; set; }
意見:
@foreach (var question in Model.QuestionsAnswers)
{
<tr>
<td>
@Html.DropDownListFor(m => question.Answer, Model.PossibleAnswers, new { style = "font-size: small;" })
</td>
<td>
@Html.Raw(question.Question)
</td>
</tr>
}
次のようになります。