以下のフォームがあります。
表示されるフィラー リストは、ユーザーが前の画面で「カプセル サイズ」として選択したものによって異なります。つまり、ユーザーが前の画面で「カプセル 0」を選択して [送信] をクリックすると、この画面にそのカプセルのフィラーのリストが表示されます。それはすべて完璧に機能します。私ができる必要があるのは、このフォームで選択されたフィラーをキャプチャすることです。ユーザーがこのフォームで [作成] をクリックすると、コードは "Process" コントローラーで "GetResults" メソッドを呼び出します。
public ActionResult GetResults(ProcessViewModel vm)
{
List<Results> results = context.GetResults();
return View(results);
}
そして、この特定の View が動作している ViewModel は次のとおりです。
public class ProcessViewModel
{
public audit_session AuditSession { get; set; }
public int NumberOfCapsules { get; set; }
public int CapsuleFK { get; set; }
public audit_ingredient_active Active1 { get; set; }
public audit_ingredient_active Active2 { get; set; }
public audit_ingredient_active Active3 { get; set; }
public audit_ingredient_active Active4 { get; set; }
public audit_ingredient_active Active5 { get; set; }
public audit_ingredient_active KeyActive { get; set; }
public audit_ingredient_filler Filler { get; set; }
public bool E4M { get; set; }
public bool K100M { get; set; }
public List<filler> Fillers { get; set; }
}
私ができるようにしたいのは、選択したフィラーをキャプチャし、それをViewModelのフィラーに何らかの方法でバインドすることです。これどうやってするの?他のすべては正しくバインドされています (E4M、K100M、および表示されないフォーム上の他のすべてのフィールド)。
フィラー リストのマークアップは次のようになります。このマークアップに 100% の自信があるわけではないため、ここに問題があると思われます。
<label>Choose Filler:</label><br />
<fieldset data-role="controlgroup">
@foreach (var i in Model.Fillers)
{
@Html.RadioButtonFor(x => x.Filler, "false", new { name = "radio-choice", id = i.pk });
<label for="@i.pk">@i.name</label>
}
</fieldset>