「NerdDinner」チュートリアルに従って、最初の MVC アプリケーションを構築しています。ただし、同じ方法で SelectList からドロップダウンリストを作成すると、問題が発生します。
何らかの理由で、「編集」ビューを表示すると、データがデータベースに別の方法で設定されていて、「詳細」ビューに正しい値が表示されているにもかかわらず、ドロップダウンリストに正しい選択が表示されません。誰もがリストの最初の値を考え出しています。
私は NerdDinner コードを少しずつ調べてきましたが、私の人生では違いがわかりませんが、そのアプリケーションは編集時に現在の値でドロップダウンを正しく表示しますが、私のものはそうではありません。
ここからどこへ行くべきかについての提案はありますか?誰かが特定の何かを求めた場合、コード スニペットを投稿できます。
アップデート:
フィールドセット内:
<p>
<label for="Parking">Parking Arrangement:</label>
<%= Html.DropDownList("Parking", Model.Parking)%>
<%= Html.ValidationMessage("Parking", "*") %>
</p>
編集アクション:
//
// GET: /Buyer/Edit/2
public ActionResult Edit(int id)
{
Buyer_Profile buyer_profile = buyerRepository.GetBuyerProfileByID(id);
if (buyer_profile == null)
return View("NotFound");
else if (!buyer_profile.IsOwnedBy(User.Identity.Name, id))
return RedirectToAction("Index", "Home");
else
return View(new BuyerFormViewModel(buyer_profile));
}
NerdDinner の例で作成したのと同じ方法で、'...FormViewModel' を作成しました。
public class BuyerFormViewModel
{
// Properties
public Buyer_Profile Buyer_Profile { get; private set; }
public SelectList Parking { get; private set; }
// Constructor
public BuyerFormViewModel(Buyer_Profile buyer_profile)
{
Buyer_Profile = buyer_profile;
Parking = new SelectList(BuyerProfileOptions.Parking, Buyer_Profile.Parking);
}
}
そして、値がすでに詳細ビューに表示され、d/b に保存されている場合に「編集」をクリックすると生成される HTML:
<p>
<label for="Parking">Parking Arrangement:</label>
<select id="Parking" name="Parking"><option>No Preference</option>
<option>On Street</option>
<option>Assigned Street</option>
<option>Open Garage</option>
<option>Covered Garage</option>
</select>
</p>
同じフォームのテキスト フィールドには、値が正しく設定されています。そうでないのはすべてのドロップダウンだけです!
ご清聴ありがとうございました。