[英]RadioButtonFor model binding not working with Enum
我正在嘗試實現一個包含單選按鈕的網格狀結構的表單。 有四個單選按鈕,可以選擇其中一個。 在模型中,我有一個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
}
}
提交頁面時,我希望模型屬性將填充所選的值,但現在不會發生。 請幫助我探討我在哪里做錯了,以及是否有更好的方法可以做到這一點。 提前致謝!
List<SiteDetails> Sites
和HubType Hub
是字段,不是屬性,因此DefaultModelBinder
無法設置該值。 您需要為其設置屬性
public class Customer
{
....
public List<SiteDetails> Sites { get; set; }
}
public class SiteDetails
{
....
public HubType Hub = { get; set; }
}
然后在控制器(或無參數構造函數)中分配這些值。 還要注意, int ChangesMade
和bool MigrationDateChanged
也是字段,但是您似乎沒有在視圖中使用它們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.