【发布时间】:2016-06-23 13:38:07
【问题描述】:
我正在尝试实现一个包含类似网格的单选按钮结构的表单。有四个单选按钮,可以选择其中一个。在模型中,我有一个 Enum 来保存四个选项,并且模型对此有参考。
枚举:
public enum HubType
{
Hub5 = 0,
Hub3 = 1,
Router = 2,
Others = 3,
}
模型:
public class Customer
{
public string ReferenceId { get; set; }
public CustomerType Type { get; set; }
public int ChangesMade = 0;
public DateTime MigrationDate { get; set; }
public bool MigrationDateChanged = false;
public List<SiteDetails> Sites = new List<SiteDetails>()
{
new SiteDetails { SiteAddress = "test address 1", Hub = HubType.Hub3 },
new SiteDetails { SiteAddress = "test address 2", Hub = HubType.Hub5},
new SiteDetails { SiteAddress = "test address 3", Hub = HubType.Router},
new SiteDetails { SiteAddress = "test address 4", Hub = HubType.Hub5}
};
}
SiteDetails.cs
public class SiteDetails
{
public String SiteAddress { get; set; }
public HubType Hub = HubType.Hub5;
}
最后是局部视图 SiteDetails.cshtml
@model MyApp.Models.Customer
@using MyApp.Models.Enums
@{
var hubTypes = Enum.GetValues(typeof(HubType));
}
@using (Html.BeginForm("SiteDetails", "MyApp", FormMethod.Post))
{
@for(int site = 0; site < Model.Sites.Count; site++)
{
@Model.Sites[site].SiteAddress
@for (int hub = 0; hub < hubTypes.Length; hub++)
{
@Html.RadioButtonFor(m => m.Sites[site].Hub, hubTypes.GetValue(hub))
}
<input type="submit" class="button right" value="Save
}
}
当我提交页面时,我希望模型属性填充所选值,但现在不会发生这种情况。请帮助我探索我做错了什么以及是否有更好的方法来做到这一点。提前致谢!
【问题讨论】:
-
您不能使用
foreach循环为集合生成表单控件。 -
感谢您的回答。我已经用传统的 for 循环替换了 foreach 循环,但问题仍然存在。我已经编辑了代码以供查看。
-
我重新打开了这个问题,但您还有多个其他错误 - 将很快添加答案。
标签: c# asp.net-mvc razor enums radio-button