我的表格如下:
您看到的填充列表可能会有所不同,具体取决于用户在上一个屏幕中选择的“胶囊大小”。换句话说,如果用户在前一个屏幕中选择“Capsule 0”并单击“提交”,则此屏幕将显示该胶囊的填充列表。这一切都很完美。我需要做的是捕获在此表单上选择的填充物。当用户在此表单上单击“创建”时,代码将调用“进程”控制器中的“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中的Filler。我怎样才能做到这一点?其他所有内容都正确绑定(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>
答案 0 :(得分:0)
因为您要覆盖单选按钮名称,所以您可以尝试手动绑定Filler
属性,而不是依赖于默认的模型绑定器。
您可能需要在控制器签名中添加额外的string radio_choice
参数(或使用Request.Form["radio-choice"]
直接捕获它),并将它们分配给Filler
的{{1}}属性}。