0

I want a way in which I can display the value of the Foreign key rather then displaying a number. For example I have the following view to show all reviews:

@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>

I want a way in which the GameIDFK shows the name of the game rather then a number my controller to show this information is basic will show you here:

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

Is there a way in which i can obtain the game Foreign Key as this site is going to be used for new coming gamers and I want tos how which games are good play dont want a user clicking on a review and seeing just a number and no game name.

Can you please help

EDIT:

I used the following in my view:

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

But it crashses and gives the following error:

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

EDIT 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; }
    }
user1137472
  • 345
  • 2
  • 5
  • 20
  • You might get more help with a higher accept %. Also can you post up the code for your tblReview model – glosrob Apr 07 '12 at 23:01
  • http://stackoverflow.com/questions/5360372/the-objectcontext-instance-has-been-disposed-and-can-no-longer-be-used-for-opera – AliRıza Adıyahşi Apr 07 '12 at 23:05
  • aliriza adhiyahsi the link you provide i have seen this and if you look at my controller i am using this allready there is a return view there – user1137472 Apr 07 '12 at 23:08

1 Answers1

1

You might want to consider using ViewModel classes, but I think if you amend your controller to use something like

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

You would be able to use the property in your view as you have posted above.

glosrob
  • 6,631
  • 4
  • 43
  • 73
  • Worked perfectly :) thanks see if stuff works i accept it as it works people dont understand that, even though peoples code may be incorrect why shoudl i accept just to keep my % up but thanks worked :) – user1137472 Apr 07 '12 at 23:42