C# 2个型号选择在字符串上
我试图通过VisualStudio2010学习自己的MVC4 我想做的是在Someone用户名上选择的1个视图上获得2个模型的完整输出 所以如果我去/Teams/Details/1 我会从模特、球员和球队那里得到所有的信息 型号:C# 2个型号选择在字符串上,c#,visual-studio-2010,viewmodel,C#,Visual Studio 2010,Viewmodel,我试图通过VisualStudio2010学习自己的MVC4 我想做的是在Someone用户名上选择的1个视图上获得2个模型的完整输出 所以如果我去/Teams/Details/1 我会从模特、球员和球队那里得到所有的信息 型号: public class Players { public int ID { get; set; } public string Name { get; set; } public int price { get; set; }
public class Players
{
public int ID { get; set; }
public string Name { get; set; }
public int price { get; set; }
public string coach { get; set; }
public string Team { get; set; }
}
public class Teams
{
public int ID { get; set; }
public string Name { get; set; }
public string coach { get; set; }
}
控制器
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using voetbal.Models;
namespace voetbal.Controllers
{
public class TeamsController : Controller
{
private TeamsDBContext db = new TeamsDBContext();
//
// GET: /Teams/
public ActionResult Index()
{
return View(db.Teams.ToList());
}
//
// GET: /Teams/Details/5
public ActionResult Details(int id = 0)
{
Teams teams = db.Teams.Find(id);
if (teams == null)
{
return HttpNotFound();
}
return View(teams);
}
//
// GET: /Teams/Create
public ActionResult Create()
{
return View();
}
//
// POST: /Teams/Create
[HttpPost]
public ActionResult Create(Teams teams)
{
if (ModelState.IsValid)
{
teams.coach = User.Identity.Name;
db.Teams.Add(teams);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(teams);
}
//
// GET: /Teams/Edit/5
public ActionResult Edit(int id = 0)
{
Teams teams = db.Teams.Find(id);
if (teams == null)
{
return HttpNotFound();
}
return View(teams);
}
//
// POST: /Teams/Edit/5
[HttpPost]
public ActionResult Edit(Teams teams)
{
if (ModelState.IsValid)
{
db.Entry(teams).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(teams);
}
//
// GET: /Teams/Delete/5
public ActionResult Delete(int id = 0)
{
Teams teams = db.Teams.Find(id);
if (teams == null)
{
return HttpNotFound();
}
return View(teams);
}
//
// POST: /Teams/Delete/5
[HttpPost, ActionName("Delete")]
public ActionResult DeleteConfirmed(int id)
{
Teams teams = db.Teams.Find(id);
db.Teams.Remove(teams);
db.SaveChanges();
return RedirectToAction("Index");
}
protected override void Dispose(bool disposing)
{
db.Dispose();
base.Dispose(disposing);
}
}
}
我绝对有办法做到这一点,我尝试了viewmodel类,但我不知道如何获得有关某人教练姓名的信息
我期待着您的回复。有很多方法可以剥这只猫的皮,但有一点您必须首先看到的是,您甚至没有发回两种型号的一个实例。如果检查详细信息操作的代码: 显然,我们返回的只是团队模型的一个实例。那么,让我们看看我们有一个选项。考虑下面的代码:
public ActionResult Details(int id = 0)
{
Teams teams = db.Teams.Find(id);
if (teams == null)
{
return HttpNotFound();
}
// get the list of players into a List<Players>
var players ...
var model = new Tuple<Teams, List<Players>>(teams, players);
return View(model);
}
从那里我们可以做一些事情,比如:
Model.Item1.Name
或:
你能添加你的控制器操作代码吗?你是如何将你的Db映射到类的?谢谢,我通过编辑我的帖子包含了控制器。谢谢你的回复,我真的很感激!你能告诉我我该怎么做吗@var玩家。。。部分?@JasonHoendervanger:你需要像对待球队一样,用数据库环境来对待球员。如果玩家不在TeamsDbContext中,那么您需要将其添加到该上下文或构建一个新上下文。不管是哪种方式,你都需要进入数据库,找到他们想要的球队球员的详细信息。你能给我举个例子吗?我不能让它工作。我不知道在哪里提供上下文。我确实在Players.cs模型中提供了一个上下文。通过使用[var Players=db2.Players.ToList;]我可以收到球员列表,现在我只想看到教练所在的球员,例如Jasony,你可以在上面使用where。
@model Tuple<Teams, List<Players>>
Model.Item1.Name
Model.Item2[0].Name;