0

ツアーとホテルの 2 つのテーブルがあります。結合を使用してクエリを実行し、ビューで結果を取得します。

下の図のように 2 つのテーブルのデータを表示するにはどうすればよいですか?

ここにリンクの説明を入力

コントローラーには、次のコードがあります。

 public ActionResult DetailView(string strID)
    {
        var id_tour =  (from data1 in _db.Tours
                       join dataview2 in _db.TypeOfCosts on data1.ID_TourCost equals dataview2.ID_TourCost
                       where (data1.ID_Tour == strID) && (data1.ID_TourCost == dataview2.ID_TourCost)
                       select new
                       {
                           data1.TourName,
                           data1.ID_Tour,
                           data1.DepartureDay,
                           data1.DeparturePosition,
                           data1.AvailableRoom, 
                           dataview2.AdultCost,
                           dataview2.ChildrenCost,
                           dataview2.BabyCost,
                       }).FirstOrDefault();
        var view_tour = new DetailModels(id_tour.TourName, id_tour.ID_Tour, Convert.ToDateTime(id_tour.DepartureDay), id_tour.DeparturePosition,
            Convert.ToInt32(id_tour.AvailableRoom),
            Convert.ToInt32(id_tour.AdultCost), Convert.ToInt32(id_tour.ChildrenCost), Convert.ToInt32(id_tour.BabyCost));
        return View(view_tour);
    }
    [HttpPost]
    public ActionResult DetailView(DetailModels model)
    {
        var id_hotel = from data2 in _db.Tours
                       join dataview3 in _db.TourPrograms on data2.ID_Tour equals dataview3.ID_Tour
                       join dataview4 in _db.Programs on dataview3.ID_TourProgram equals dataview4.ID_TourProgram
                       join dataview5 in _db.Hotels on dataview4.ID_Hotel equals dataview5.ID_Hotel
                       where (data2.ID_Tour == dataview3.ID_Tour) &&
                       (dataview3.ID_TourProgram == dataview4.ID_TourProgram) && (dataview4.ID_Hotel == dataview5.ID_Hotel)
                       select new
                       {
                           dataview5.HotelName,
                           dataview5.HotelAddress,
                           dataview5.HotelPhoneNumber,
                       };
        // chuyền dữ liệu vào như thế nào
        return RedirectToAction("DetailView", "Tourpackage");
    }

モデルには、次のコードがあります。

enter code here public class DetailModels
{
    public string TourName { get; set; }
    public string ID_Tour { get; set; }
    public DateTime DepartureDay { get; set; }
    public string DeparturePosition { get; set; }
    public int AvailableRoom { get; set; }
    public string HotelName { get; set; }
    public string HotelAddress { get; set; }
    public int HotelPhoneNumber { get; set; }
    public int AdultCost { get; set; }
    public int ChildrenCost { get; set; }
    public int BabyCost { get; set; }
    public DetailModels(string tourname, string idtour, DateTime dapartureday, string departureposition, int availableroom,
        int adultcost, int childrencost, int babycost)
    {
        this.TourName = tourname; this.ID_Tour = idtour; this.DepartureDay = dapartureday; this.DeparturePosition = departureposition;
        this.AvailableRoom = availableroom;
        this.AdultCost = adultcost; this.ChildrenCost = childrencost; this.BabyCost = babycost;
    }

みんなの助けを願って............ありがとう

4

1 に答える 1

0

MVC を使用している場合は、Entity Framework を使用することを強くお勧めします。使用したことがない場合は、http ://www.pluralsight-training.net/microsoft/Courses/TableOfContents? courseName=aspdotnet-mvc3-intro - 非常に優れたビデオ チュートリアルをご覧ください。Tour-Hotel関係は典型的な多対多だと思います。Mapped by EF class Tour にはプロパティがHotelsあり、その逆も同様です。たとえばTour、ビュー@Model.Hotelsに渡すと、関連するホテルのコレクションが表示されます。ところで、いくつかのリファクタリングコードを実行してください:)

于 2012-05-13T10:09:52.803 に答える