列挙型を使用してDropDownListにデータを入力していますが、これはListビューとCreateビューで正常に機能しますが、EditビューはDropDownListに重複する値をロードします。重複する値は、プロパティの選択された値のみです。RentedがDBに保存された値である場合、DropDownListには、Rented selected、Available、および別のRentedがリストに表示されます。私が知る必要があるのは、重複することなくPropertyStatus列挙型のDBに以前に保存された値を選択するDropDownListをロードする方法です。
コントローラー:
public ActionResult Edit(int id)
{
Property property = db.Properties.Find(id);
ViewBag.PropertyStatus = SetViewBagPropertyStatus();
return View(property);
}
private IEnumerable<SelectListItem> SetViewBagPropertyStatus()
{
IEnumerable<ePropStatus> values =
Enum.GetValues(typeof(ePropStatus)).Cast<ePropStatus>();
IEnumerable<SelectListItem> items =
from value in values
select new SelectListItem
{
Text = value.ToString(),
Value = value.ToString()
};
return items;
}
モデル:
public enum ePropStatus
{
Available ,
Rented
}
public partial class Property
{
public int PropertyId { get; set; }
public string PropName { get; set; }
public string Address { get; set; }
public string City { get; set; }
public string State { get; set; }
public string ZipCode { get; set; }
public int SqFeet { get; set; }
public int Bedrooms { get; set; }
public int Bathrooms { get; set; }
public int Garage { get; set; }
public string Notes { get; set; }
public ePropStatus PropertyStatus { get; set; }
}
ビューの編集:
@Html.DropDownList("PropertyStatus", Model.PropertyStatus.ToString())