0

我有一个名为 Fixture 的实体,基本上我想在页面上显示一些灯具。

我的模型如下:-

    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; }
}

我的 ViewModel 如下:-

    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>

我怎样才能做到这一点?

我在模型中添加了一个导航项 Country,但是我仍然无法显示正确的 CountryName。

感谢您的帮助和时间

4

2 回答 2

0

CountryIdACountryIdB只是整数。如果你想说...

用 CountryIdA/B 找到一个夹具,然后获取它的 Country,然后是 CountryName

那么这不适合放在一个视图中。您的视图不应处理任何数据访问,这是您的控制器/模型的工作。我建议在您的视图模型中添加两​​个 Country 属性,一个用于 IdA,一个用于 IdB。然后你可以在你的控制器动作中填充这些,并在你的视图中访问它们。

您的控制器可能看起来像...

ViewModel.CountryA = Country.Where(x => x.CountryID = ViewModel.CountryIdA)

于 2013-08-21T19:02:56.733 回答
0

您可以通过在同一命名空间中创建部分类 Fixture 来扩展模型中的 Fixture,创建两个自定义属性 CountryIdA/B 来查找当前 ID。

于 2013-08-21T19:05:54.890 回答