我想在我的視圖中實現編輯地址。MVC中的下拉框3
地址具有街道,城鎮等的基本字符串。它還具有國家ID。我在我的國家數據庫中有一個表格。
在我控制我創建的SelectList這些國家:
ViewBag.Countries = _countryRepo.GetAll().Select(c => new SelectListItem { Text = c.Name, Value = c.Id });
現在,在我看來,我希望能夠利用這個選擇列表允許用戶選擇國家。
我本來以爲:
@Html.DropDownList("countryId", (IEnumerable<Country>)ViewBag.Countries, "Select")
我有兩個地址:
public class Company()
{
public Address HeadOffice { get; set; }
public Address SecondOffice { get; set; }
}
所以顯示視圖時,我需要有所示的選擇國家。我不認爲我可以做到這一點在我的控制器,因爲如果我選擇一個這樣的:
ViewBag.Countries = _countryRepo.GetAll().Select(c => new SelectListItem { Text = c.Name, Value = c.Id, Selected = c.Id == model.HeadOffice.Id ? true : false });
這隻會爲HeadOffice上工作。
從我可以有兩種選擇。有兩個不同的選擇列表或在視圖中手動構建選擇列表:
<select name="HeadOffice.CountryId">
@foreach(var c in (IEnumerable<Country>)ViewBag.Countries)
{
<option value="@c.Id" @(c.Id == Model.HeadOffice.Id ? "selected='true'" : "">@c.Name</option>
}
</select>
什麼是最佳方式?這兩個看起來不對,也不好。有沒有更好的方法來解決這個問題?
優秀!好主意 - 我會這樣做的。謝謝。 – Terry 2012-01-05 20:40:05
@特里偉大!很高興我能幫上忙。 – 2012-01-05 20:43:34
@BassamMehanni你在這裏寫了兩次相同的代碼。 ASP.NET MVC的原則之一是遵循DRY方法。 – tugberk 2012-01-05 20:46:56