簡體   English   中英

從模型中的IEnumerable填充下拉列表,設置選定的值

[英]Populate Drop Down List from IEnumerable in the Model, Set Selected Value

這是模型:

public class PolicyDetail
{
    public Policy Policy { get; set; }
    public IEnumerable<Insured> Insured { get; set; }
    public IEnumerable<Risk> Risk { get; set; }
    public IEnumerable<Construction> Construction { get; set; }
}

構造看起來像這樣:

public class Construction
{
    public int ConstructionID { get; set; }
    public string ConstructionType { get; set; }
}

在DB中,只有4行。 它基本上是一個枚舉。

而且在風險范圍內是這個屬性:

public int ConstructionID { get; set; }

在將模型發送到視圖之前,我們填寫PolicyDetail中的每個對象,其中Insured和Risk是Policy的子項。 每次加載構造都會加載所有四行。

因此,在模型中,我們列出了所有的風險。 當我們顯示它們時,我們希望將Constructions顯示為下拉列表,並將所選值設置為Risk.ConstructionID中的值。

令人驚訝的是,這些簡單的下拉可以在MVC中燒掉多少心臟。

@foreach (var item in Model.Risk)
{
    ... Other items in Risk

    <div class="form-group">
        @Html.Label("Construction Type", new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.DropDownList(?????????)
        </div>
    </div>

    ... Other items in Risk
}

如何用所有項目填寫下拉列表

Model.Constrution

並將所選項目設置為

item.ConstrucitonID

謝謝!

編輯:

這是工作解決方案:

@Html.DropDownList("ConstructionType", new SelectList(Model.Construction.Distinct().ToList(), "ConstructionID", "ConstructionType", item.ConstructionID))

您需要將IEnumerable<Construction>轉換為SelectList並指定所選值。

類似下面的內容(注意:我沒有在VS中對此進行編碼,因此語法或參數可能不正確,但您會明白這一點)

@Html.DropDownList("ddlConstructionId", new SelectList(Model.Constrution, "ConstructionID" , "ConstructionType", item.ConstrucitonID))

創建SelectList時,您需要指定所選的值。 我認為這是最好的構造函數:

public SelectList(
    IEnumerable items,
    string dataValueField,
    string dataTextField,
    object selectedValue
)

所以,在你的情況下,它將是:

@Html.DropDownList("CompanyName",
               new SelectList(Model.Construction.Distinct().ToList(), "ConstructionID", "ConstructionType", item.ConstrucitonID));

暫無
暫無

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

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