簡體   English   中英

RadioButtonFor模型綁定不適用於Enum

[英]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> SitesHubType Hub是字段,不是屬性,因此DefaultModelBinder無法設置該值。 您需要為其設置屬性

public class Customer
{
    ....
    public List<SiteDetails> Sites { get; set; }
}
public class SiteDetails
{
    ....
    public HubType Hub = { get; set; }
}

然后在控制器(或無參數構造函數)中分配這些值。 還要注意, int ChangesMadebool MigrationDateChanged也是字段,但是您似乎沒有在視圖中使用它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM