私のビューで編集アドレスを実装しようとしています。MVC 3のドロップダウンボックス
住所には、通りや町などの基本的な文字列があります。国名もあります。私は国のデータベースにテーブルを持っています。私のコントローラで
は、私はこれらの国のためにSelectListのを作成します。
ViewBag.Countries = _countryRepo.GetAll().Select(c => new SelectListItem { Text = c.Name, Value = c.Id });
は今、私の見解で、私は、ユーザーが国を選択できるようにするには、この選択リストを使用できるようにしたいです。
私が当初考えていた:私は国を選択してを示している必要がありビューを表示するときに
public class Company()
{
public Address HeadOffice { get; set; }
public Address SecondOffice { get; set; }
}
:
@Html.DropDownList("countryId", (IEnumerable<Country>)ViewBag.Countries, "Select")
は、私は2つのアドレスを持っています。私はこのようなものを選択した場合ので、私は私のコントローラでこれを行うことができるとは思わない:これはHeadOfficeのために動作します
ViewBag.Countries = _countryRepo.GetAll().Select(c => new SelectListItem { Text = c.Name, Value = c.Id, Selected = c.Id == model.HeadOffice.Id ? true : false });
。
ここから2つのオプションがあります。 2つの異なる選択リストを作成するか、ビュー内で選択リストを手動で作成します。
<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
@Terry great !!私は助けてうれしいです。 –
@BassamMehanniここで同じコードを2回書いています。 ASP.NET MVCのプリンシパルの1つは、DRYアプローチに従うことです。 – tugberk