3

「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>

同じフォームのテキスト フィールドには、値が正しく設定されています。そうでないのはすべてのドロップダウンだけです!

ご清聴ありがとうございました。

4

2 に答える 2

2

は。htmlhelper は良すぎるようです。モデルへの参照を削除すると、すべてが機能します!

すなわち

 <%= Html.DropDownList("Parking", Model.Parking)%>

になる

 <%= Html.DropDownList("Parking")%>

そして私たちはゴールデンです。モデルで参照しているため、ViewDataに「駐車場」と呼ばれるものが含まれているので、他の値を押しつぶします...または何か...?

于 2009-05-10T02:59:00.220 に答える
2

人々への簡単なヒント - ドロップダウン リストが必要な場合は、モデル プロパティに「タイトル」という名前を付けないでください。フレームワークがビュー タイトルと混同され、機能しなくなります。私はこれについて髪をかきむしるのに丸一日午後を費やしました。何が起こっているのかを理解するために、その上で寝る必要がありました。

于 2011-01-14T09:53:52.810 に答える