显示基于ID MVC4的配方名称

时间:2015-08-01 12:57:05

标签: c# html linq asp.net-mvc-4 model-view-controller

我有一个食谱列表,用于将烹饪ID的外键存储在数据库中。

我希望我的视图模型显示"菜肴的名称"基于存储在数据库中的此ID。我该怎么做?

我的食谱数据库看起来像:

名称:鸡肉汉堡,美食ID:4 名称:蔬菜示例,美食ID:3

美食数据库如下: 姓名:印度人身份= 1, 姓名:中文,Id = 2,......等

我希望我的视图模型显示烹饪名称,而不是仅用于数据库参考的ID。

我正在使用Entity Framework连接到我的数据库,只需要一个很好的方式,我可以显示每个食谱的所有美食名称,菜肴名称将从菜肴数据库中提取,具体取决于存储在食谱

烹饪模型

public class Cuisine
{
    public int Id { get; set; }
    public string CuisineName { get; set; }
    public virtual ICollection<TestRecipe> TestRecipes { get; set; }
}

食谱模型

public class TestRecipe
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int CuisineId { get; set; }
    public virtual Cuisine Cuisine { get; set; }
}

食谱控制器:

public class TestRecipeController : Controller
    {
        private FoodZillaDb db = new FoodZillaDb();
        //
        // GET: /TestRecipe/

        public ActionResult Index()
        {

            var model = db.TestRecipes
                        .Take(10);

            return View(model);
        }

        //
        // GET: /TestRecipe/Details/5

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

        //
        // GET: /TestRecipe/Create

        public ActionResult Create()
        {
            ViewBag.CuisineId = new SelectList(db.Cuisines, "Id", "CuisineName");
            return View();
        }

        //
        // POST: /TestRecipe/Create

        [HttpPost]
        public ActionResult Create(TestRecipe recipe)
        {
            if (ModelState.IsValid)
            {
                db.TestRecipes.Add(recipe);
                db.SaveChanges();
                return RedirectToAction("Index");
            }
            ViewBag.CuisineId = new SelectList(db.Cuisines, "Id", "CuisineName",recipe.CuisineId);
            return View("Index");
        }

我希望索引视图控制器发送菜单名称而不是存储在TestRecipe DB中的ID。我相信我必须做一些内心的加入?

1 个答案:

答案 0 :(得分:1)

var query1 = from r in db.MyRecipe
             join c in db.Cuisine
            on c.Id equals r.Id

 select new MyViewModel()
  {
       CuisineName = c.Name
       Price = r.Name,
       ........
  };