0

ホテル ビュー - index.cshtml にドロップダウン リストを追加しようとしています。このビューのホテル コントローラーは、Hotel オブジェクトを取得します。

private HotelEntities db = new HotelEntities();

   public ViewResult Index()
    {
        var hotels = db.Hotels.Include("Address");
        return View(hotels.ToList());
    }

このビューにホテルのリストを表示したいと考えています。しかし、このリストを表示する前に、ユーザーがホテルを表示したい国を検索できるようにしたいと考えています。ドロップダウン リストは、データベース内の国のリストです。エンティティ モデル (HotelEntities) にオブジェクトがあります。ドロップダウンリストと、国のリストを取得する国コントローラーを使用して、共有フォルダーに部分的な国のビューを作成しました。

 public class CountryController : Controller
   {
    private HotelEntities db = new HotelEntities();
    //
    // GET: /Country/

    public ActionResult Index()
    {
        var country = db.Countries.ToList();
        return View(country.ToList());
    }

}

私が持っている部分的なビューでは:

@model IEnumerable <MvcApp20Aug.Models.Country>


           @foreach (var item in Model)
           {
             @Html.DropDownListFor(model => item.CountryId, new SelectList(item.CountryIso, item.CountryName));

           }

最後に、部分ビューをホテルの index.cshtml に追加しました。

@model IEnumerable<MvcHotelApp.Models.Hotel>

@{
    ViewBag.Title = "Index";
}

<h2>Index </h2> 
@{Html.RenderPartial("Country");}
<p>

エラーが表示されます: ディクショナリに渡されたモデル アイテムのタイプは 'System.Collections.Generic.List`1[MvcHotelApp.Models.Hotel]' ですが、このディクショナリにはタイプ 'MvcHotelApp.Models.Country' のモデル アイテムが必要です.

そのため、部分ビューでメイン ビューとは異なるテーブルを使用する方法がわかりません。誰も説明できない理由と、これにどのように取り組むべきかを説明できますか。

4

1 に答える 1

0

のように呼びます。

         @{Html.RenderAction("Index","Country");}

countryこのように部分ビューを変更し、

       @model IEnumerable <MvcApp20Aug.Models.Country>
         @Html.DropDownListFor("CountryId", new SelectList(Model.CountryIso, Model.CountryName));
于 2012-09-13T07:24:05.563 に答える