【问题标题】:Foreign Key Just showing a number which is associated with the primary key外键 仅显示与主键关联的数字
【发布时间】:2012-04-07 22:53:18
【问题描述】:

我想要一种显示外键值而不是显示数字的方法。例如,我有以下视图来显示所有评论:

@model IEnumerable<Games.Models.tblReview>

@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>

<p>
    @Html.ActionLink("Create New", "Create")
</p>
<table>
    <tr>
        <th>
            ReviewID
        </th>
        <th>
            Recomendation
        </th>
        <th>
            AvoidOrBuy
        </th>
        <th>
            Score
        </th>
        <th>
            GameIDFK
        </th>
        <th>
            UserName
        </th>
        <th></th>
    </tr>

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.ReviewID)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Recomendation)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.AvoidOrBuy)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Score)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.GameIDFK)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.UserName)
        </td>
        <td>
            @Html.ActionLink("Edit", "Edit", new { /* id=item.PrimaryKey */ }) |
            @Html.ActionLink("Details", "Details", new {  id=item.ReviewID }) |
            @Html.ActionLink("Delete", "Delete", new { /* id=item.PrimaryKey */ })
        </td>
    </tr>
}

</table>

我想要一种让 GameIDFK 显示游戏名称的方式,而不是我的控制器用来显示此信息的数字,这是基本信息将在此处显示给您:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Games.Models;

namespace Games.Controllers
{
    public class ShowAllReviewsController : Controller
    {
        //
        // GET: /ShowAllReviews/

        public ActionResult Index()
        {
            using (var db = new gamezoneDBEntities())
            {

                return View(db.tblReviews.ToList());
            }
        }

        //
        // GET: /ShowAllReviews/Details/5

        public ActionResult Details(int id)
        {
            return View();
        }

        //
        // GET: /ShowAllReviews/Create

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

        //
        // POST: /ShowAllReviews/Create

        [HttpPost]
        public ActionResult Create(FormCollection collection)
        {
            try
            {
                // TODO: Add insert logic here

                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }

        //
        // GET: /ShowAllReviews/Edit/5

        public ActionResult Edit(int id)
        {
            return View();
        }

        //
        // POST: /ShowAllReviews/Edit/5

        [HttpPost]
        public ActionResult Edit(int id, FormCollection collection)
        {
            try
            {
                // TODO: Add update logic here

                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }

        //
        // GET: /ShowAllReviews/Delete/5

        public ActionResult Delete(int id)
        {
            return View();
        }

        //
        // POST: /ShowAllReviews/Delete/5

        [HttpPost]
        public ActionResult Delete(int id, FormCollection collection)
        {
            try
            {
                // TODO: Add delete logic here

                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }
    }
}

有没有一种方法可以让我获得游戏外键,因为这个网站将被新来的游戏玩家使用,我想知道哪些游戏是好的游戏不希望用户点击评论并只看到一个编号,没有游戏名称。

你能帮忙吗

编辑:

在我看来,我使用了以下内容:

@Html.DisplayFor(modelItem => item.tblGame.GameName)

但它崩溃并给出以下错误:

The ObjectContext instance has been disposed and can no longer be used for operations that require a connection.

编辑 2:

namespace Games.Models
{
    using System;
    using System.Collections.Generic;

    public partial class tblReview
    {
        public int ReviewID { get; set; }
        public string Recomendation { get; set; }
        public string AvoidOrBuy { get; set; }
        public string Score { get; set; }
        public int GameIDFK { get; set; }
        public string UserName { get; set; }

        public virtual tblGame tblGame { get; set; }
    }

【问题讨论】:

  • 接受百分比越高,您可能会获得更多帮助。您也可以发布您的 tblReview 模型的代码
  • aliriza adhiyahsi 您提供的链接我已经看到了,如果您查看我的控制器,我已经在使用它,那里有一个返回视图

标签: c# asp.net asp.net-mvc-3 asp.net-mvc-3-areas


【解决方案1】:

你可能想考虑using ViewModel classes,但我认为如果你修改你的控制器以使用类似的东西

 return View(db.tblReviews.Include("tblGame").ToList());

您将能够在您的视图中使用您在上面发布的属性。

【讨论】:

  • 工作得很好:)谢谢看看东西是否有效
猜你喜欢
  • 1970-01-01
  • 2014-05-13
  • 1970-01-01
  • 2012-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-08
相关资源
最近更新 更多