Webページ(ASP.NET MVC 4)に複数のラジオボタンリストを実装する必要があります。そのために、私はエディターテンプレートを使用しました。
コードは次のとおりです。
public class Evaluation
{
public List<Question> Questions { get; set; }
public Evaluation()
{
Questions = new List<Question>();
}
}
public class Question
{
private string _name;
private string _translationText;
public int LocalizationID { get; set; }
public string Name
{
get { return _name; }
set { _name = value; }
}
public string TranslationText
{
get
{
if (String.IsNullOrEmpty(_translationText))
{
return _name;
}
else
return _translationText;
}
set { _translationText = value; }
}
public List<Answer> Answers { get; set; }
[Required]
public int SelectedAnswer { get; set; }
public int Order { get; set; }
public Question()
{
Answers = new List<Answer>();
}
}
コントローラ
[HttpGet]
public ActionResult Index()
{
try
{
var evaluation = _service.GetEvaluation();
return View(evaluation);
}
[HttpPost]
public ActionResult Index(Evaluation model)
{
if (!ModelState.IsValid)
{
//Save Evaluation
}
retrun View(model);
}
モデルが有効でない場合は、モデルのメインビューに戻るはずです。ただし、モデルは完全ではなく、LocalizationIDとSelectedAnswerの情報のみが含まれています。
意見
Index.chtml
@model Evaluation
@using (Html.BeginForm())
{
@Html.ValidationSummary()
@Html.HiddenFor(x=>x.Questions)
@Html.EditorFor(x=>x.Questions)
<p>
@Html.Raw(Html.GenerateCaptcha())
@Html.ValidationMessage("recaptcha")
</p>
<input type="submit" value="@T("Save_Answer")"/>
@Html.ValidationMessage("ERROR_SURVEY")
}
エディターテンプレートの場合:
@model Question
<div id="@Model.LocalizationID">
@Html.HiddenFor(x=>x.LocalizationID)
<h3>@Model.Order. @Model.TranslationText</h3>
@if (Model.Order == 1)
{
<p>
@Html.DropDownListFor(b => b.SelectedAnswer,new SelectList(Model.Answers,"LocalizationID","TranslationText"))
</p>
}
else
{
foreach (var a in Model.Answers)
{
<p>
@Html.RadioButtonFor(b=>b.SelectedAnswer, a.LocalizationID ) @a.TranslationText
</p>
}
}
@Html.ValidationMessageFor(x=> x.SelectedAnswer)
</div>
私はASP.NETMVCを初めて使用するため、次のコードを使用しました:ASP.NETMVC3ラジオボタン強いタイプ
モデルを元に戻すための解決策はありますか?ページが更新されたり、選択したオプションが失われたりしないようにするために必要です。
ありがとうございました、