2013-08-21 30 views
0

裏面我有一個名爲夾具的實體,基本上我想在頁面上顯示一些燈具。顯示國家實體的指數

我的模型如下: -

public class Fixture 
{ 
    [Key] 
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    public int FixtureId { get; set; } 

    [Display(Name = "Fixture Date")] 
    [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)] 
    public DateTime? FixtureDate { get; set; } 

    public DateTime? FixtureTime { get; set; } 

    public int? CityId { get; set; } 
    public City City { get; set; } 

    public int CountryIdA { get; set; } 
    public int CountryIdB { get; set; } 

    public int? ScoreA { get; set; } 
    public int? ScoreB { get; set; } 

    public Round Round { get; set; } 
    public int? RoundId { get; set; } 

    public List<Scorer> Scorers { get; set; } 
} 

和我的視圖模型如下: -

public class FixtureViewModel 
{ 
    public Fixture Fixture { get; set; } 
    public IEnumerable<Fixture> FixtureList { get; set; } 

    public IEnumerable<GroupCountry> GroupCountryList { get; set; } 

    public IEnumerable<Group> GroupList { get; set; } 

    public string CountryNameA { get; set; } 
    public string CountryNameB { get; set; } 
} 

,我在這個索引頁面顯示它們: -

<table> 
<tr> 
    <th> 
     @Html.DisplayName("Date") 
    </th> 
    <th> 
     @Html.DisplayName("Country A") 
    </th> 
    <th> 
     @Html.DisplayName("Country A") 
    </th> 
    <th> 
     @Html.DisplayName("Score A") 
    </th> 
    <th> 
     @Html.DisplayName("Score B") 
    </th> 
    <th> 
     @Html.DisplayName("Round") 
    </th> 
    <th></th> 
</tr> 

@foreach (Fixture item in Model.FixtureList) 
{ 
    <tr> 
     <td> 
      @Html.DisplayFor(modelItem => item.FixtureDate) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.CountryIdA) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.CountryIdB) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.ScoreA) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.ScoreB) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.Round.RoundName) 
     </td> 
     <td> 
      @Html.ActionLink("Edit", "Edit", new {id = item.FixtureId}) | 
      @Html.ActionLink("Details", "Details", new {id = item.FixtureId}) | 
      @Html.ActionLink("Delete", "Delete", new {id = item.FixtureId}) 
     </td> 
    </tr> 
} 

</table> 

現在在索引頁,我要顯示這樣的事情: -

  <td> 
      @Html.DisplayFor(modelItem => item.CountryIdA.Country.CountryName) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.CountryIdB.Country.CountryName) 
     </td> 

我怎樣才能做到這一點?

我在模型中添加一個導航項國家,但我仍然無法顯示正確的國家或地區名稱。

感謝您的幫助和時間

回答

0

CountryIdACountryIdB只是整數。如果你是想說......

查找與CountryIdA/B夾具,然後得到它的國家,然後COUNTRYNAME

那麼這是不恰當的放在一個視圖。您的視圖不應該處理任何數據訪問,這是您的控制器/模型的工作。我建議在視圖模型中添加兩​​個國家/地區屬性,一個用於IdA,一個用於IdB。然後,您可以將這些填充到控制器操作中,並在您的視圖中訪問它們。

你的控制器可能看起來像......

ViewModel.CountryA = Countries.Where(X => x.CountryID = ViewModel.CountryIdA)

+0

埃利奧特嗨,當我試圖做到這一點,因爲我第一次使用的代碼,它在數據庫中,Country_CountryIdA和Country_CountryIdB增加2個新的領域。我不希望在db中有這個。那可能嗎? – Johann

+0

將它們添加到您的查看模型中,而不是您的表模型。這是查看模型的目的。 – ElliotSchmelliot

+0

我已經將它們添加到ViewModel中,但我不知道如何填充它們。但我不知道如何填充它們。我知道我必須迭代索引控制器操作中的列表,但我不知道如何填充它們並將它們顯示在視圖中 – Johann

0

您可以通過創建一個在你的模式擴展夾具在相同的命名空間中分部類Fixture,創建兩個自定義屬性CountryIdA/B,用於查找正確的ID。