我想在我的视图中实现编辑地址。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