2013-01-04 21 views
4

我試着自己去學習C#MVC4與Visual Studio 20102車型選擇上串

我想要做的就是對某人的用戶名選擇1名觀2種型號的完整輸出。

所以如果我去/隊/細節/ 1 我會從模型球員和球隊獲得所有信息。

型號:

public class Players 
{ 
    public int ID { get; set; } 
    public string Name { get; set; } 
    public int price { get; set; } 
    public string coach { get; set; } 
    public string Team { get; set; } 
} 

    public class Teams 
{ 
    public int ID { get; set; } 
    public string Name { get; set; } 
    public string coach { get; set; } 
} 

控制器

using System; 
using System.Collections.Generic; 
using System.Data; 
using System.Data.Entity; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 
using voetbal.Models; 

namespace voetbal.Controllers 
{ 
    public class TeamsController : Controller 
    { 
     private TeamsDBContext db = new TeamsDBContext(); 

     // 
     // GET: /Teams/ 

     public ActionResult Index() 
     { 
      return View(db.Teams.ToList()); 
     } 

     // 
     // GET: /Teams/Details/5 

     public ActionResult Details(int id = 0) 
     { 
      Teams teams = db.Teams.Find(id); 
      if (teams == null) 
      { 
       return HttpNotFound(); 
      } 
      return View(teams); 
     } 

     // 
     // GET: /Teams/Create 

     public ActionResult Create() 
     { 
      return View(); 
     } 

     // 
     // POST: /Teams/Create 

     [HttpPost] 
     public ActionResult Create(Teams teams) 
     { 
      if (ModelState.IsValid) 
      { 
       teams.coach = User.Identity.Name; 
       db.Teams.Add(teams); 
       db.SaveChanges(); 
       return RedirectToAction("Index"); 
      } 

      return View(teams); 
     } 

     // 
     // GET: /Teams/Edit/5 

     public ActionResult Edit(int id = 0) 
     { 
      Teams teams = db.Teams.Find(id); 
      if (teams == null) 
      { 
       return HttpNotFound(); 
      } 
      return View(teams); 
     } 

     // 
     // POST: /Teams/Edit/5 

     [HttpPost] 
     public ActionResult Edit(Teams teams) 
     { 
      if (ModelState.IsValid) 
      { 
       db.Entry(teams).State = EntityState.Modified; 
       db.SaveChanges(); 
       return RedirectToAction("Index"); 
      } 
      return View(teams); 
     } 

     // 
     // GET: /Teams/Delete/5 

     public ActionResult Delete(int id = 0) 
     { 
      Teams teams = db.Teams.Find(id); 
      if (teams == null) 
      { 
       return HttpNotFound(); 
      } 
      return View(teams); 
     } 

     // 
     // POST: /Teams/Delete/5 

     [HttpPost, ActionName("Delete")] 
     public ActionResult DeleteConfirmed(int id) 
     { 
      Teams teams = db.Teams.Find(id); 
      db.Teams.Remove(teams); 
      db.SaveChanges(); 
      return RedirectToAction("Index"); 
     } 

     protected override void Dispose(bool disposing) 
     { 
      db.Dispose(); 
      base.Dispose(disposing); 
     } 
    } 
} 

我絕對如何完成這件事,我已經嘗試了視圖模型類,但我不知道如何獲得某人的教練的名字此信息。

我期待您的回覆。

+1

您可以添加控制器操作代碼嗎? –

+0

你如何將Db映射到類? –

+0

謝謝,我通過編輯我的文章包括了控制器。 –

回答

1

有很多方法可以對這隻貓進行剝皮,但有一點你必須首先看到的是,即使兩個模型的一個實例都不返回。如果您檢查Details動作的代碼:

public ActionResult Details(int id = 0) 
{ 
    Teams teams = db.Teams.Find(id); 
    if (teams == null) 
    { 
     return HttpNotFound(); 
    } 
    return View(teams); 
} 

明確了所有我們發回是Teams模型的一個實例。所以,我們來看看我們有的選項。請看下面的代碼:

​​

現在在視圖我們可以設置我們的模型這個(注意,您需要在@model聲明完全限定TeamsPlayers):

@model Tuple<Teams, List<Players>> 

並從那裏,我們可以做的東西,如:

Model.Item1.Name 

或:

Model.Item2[0].Name; 
+0

謝謝你的回覆,我真的很感謝!你能告訴我我應該做些什麼@變種球員......部分? –

+0

@JasonHoendervanger:你需要像擁有團隊一樣去獲得擁有數據庫環境的玩家。如果'Players'不在'TeamsDbContext'中,那麼您需要將其添加到該上下文中,或者創建一個新的。無論哪種方式,你都需要去數據庫併爲他們想要了解細節的團隊獲取'Players'。 –

+0

你能否給我舉個例子?我無法得到這個工作。我不知道在哪裏提供上下文。我有Players.cs模型中提供的上下文。 –