[英]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.