2012-06-30 94 views
0

我是新來的MVC編程,目前正在開發一個應用程序。我有以下的問題,我缺乏想法如何解決(雖然我在這裏閱讀了一些類似的主題)。我想在我的視圖中爲我的外鍵列顯示另一個值(而不是FK值,從相關表中取一個列值)。我不知道如何實現這一點(通過linq語句的模型,在控制器,視圖中創建視圖模型)。我在ASP.NET中的知識非常短,所以我非常感謝更詳細的答案。先謝謝你 !檢查案件的波紋管。MVC3在顯示/編輯和ADO.NET實體數據模型期間引用外鍵?

我在數據庫中的以下表:

CREATE TABLE [dbo].[TBL_MANAGER](
[manager_id] [int] IDENTITY(1,1) NOT NULL, 
[first_name] [varchar](50) NULL, 
[last_name] [varchar](50) NOT NULL, 
[team_id] [int] NOT NULL, 

CREATE TABLE [dbo].[TBL_TEAM](
[team_id] [int] IDENTITY(1,1) NOT NULL, 
[name] [varchar](50) NOT NULL, 

我使用ADO.NET Entitiy數據模型來創建類TBL_MANAGER。在模型類我有以下的方法(也許它應該返回的IList):

public partial class TBL_MANAGER 
{ 
    public static IQueryable<TBL_MANAGER> GetManagersQuery() 
    { 
     FBMSEntities db = SingletonDB.getDB(); 
     var queryManager = from manager in db.TBL_MANAGER 
          orderby manager.manager_id 
          select manager; 
     return queryManager; 
    } 
} 

這是(使用的NuGet PagedList)從控制器代碼:

public ActionResult Index(int? page) 
    { 
     var managers = TBL_MANAGER.GetManagersQuery(); 
     var pageNumber = page ?? 1; 
     var onePageOfProducts = managers.ToPagedList(pageNumber, @FBMS.Common.Constants.MAX_PER_PAGE); 
     ViewBag.OnePageOfProducts = onePageOfProducts; 

     return View(managers); 
    } 

而且這是在部分查看在我想象中的數據:

@foreach (var item in ViewBag.OnePageOfProducts) 
{ 
<tr> 
    <td> 
     @item.team_id 
    </td> 
    <td> 
     @item.first_name 
    </td> 
    <td> 
     @item.last_name 
    </td> 
    <td> 
     @item.manager_status 
    </td> 
    <td> 
     @Html.ActionLink("Edit", "Edit", new { id=item.manager_id }) | 
     @Html.ActionLink("Details", "Details", new { id=item.manager_id }) | 
     @Html.ActionLink("Delete", "Delete", new { id=item.manager_id }) 
    </td> 
</tr> 
} 

我想要的,而不是TEAM_ID顯示TBL_TEAM.name的價值。

回答

0

就像你要指定ViewBag.OnePageOfProducts,你還可以指定團隊到ViewBag.Teams字典(使每個字典項目的重點是TEAM_ID和值是名稱),然後在你看來這樣做

... 

<td> 
    @ViewBag.Teams[item.team_id] 
</td> 

.... 

它會根據它的ID查找團隊的名稱並進行渲染。

相關問題