Sql server 使用自定义SQL查询显示视图
所以我对MVC和SQL还是新手。 我试图做的是在电影(即localhost/Movies/)的索引视图上显示员工的姓名(Employee.name),而不是他们的ID(MovieEmployees.ID) 我将我的数据库导入到SQL Express中,为电影制作了模型,然后为视图自动生成控制器,该视图创建了一个(创建、删除、详细信息、编辑和索引视图) 这是我当前的MovieController索引Sql server 使用自定义SQL查询显示视图,sql-server,asp.net-mvc,web-applications,Sql Server,Asp.net Mvc,Web Applications,所以我对MVC和SQL还是新手。 我试图做的是在电影(即localhost/Movies/)的索引视图上显示员工的姓名(Employee.name),而不是他们的ID(MovieEmployees.ID) 我将我的数据库导入到SQL Express中,为电影制作了模型,然后为视图自动生成控制器,该视图创建了一个(创建、删除、详细信息、编辑和索引视图) 这是我当前的MovieController索引 // GET: /Movies/ public ActionResult Index()
// GET: /Movies/
public ActionResult Index()
{
return View(db.Movies.ToList());
}
这是Index.cshtml
@model IEnumerable<WebApplication2.Entities.Movie>
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<p>
@Html.ActionLink("Create New", "Create")
</p>
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.movieEmployeeID)
</th>
<th>
@Html.DisplayNameFor(model => model.showID)
</th>
<th></th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.movieEmployeeID)
</td>
<td>
@Html.DisplayFor(modelItem => item.showID)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.ID }) |
@Html.ActionLink("Details", "Details", new { id=item.ID }) |
@Html.ActionLink("Delete", "Delete", new { id=item.ID })
</td>
</tr>
}
</table>
@model IEnumerable
@{
ViewBag.Title=“Index”;
}
指数
@ActionLink(“新建”、“创建”)
@DisplayNameFor(model=>model.movieEmployeeID)
@DisplayNameFor(model=>model.showID)
@foreach(模型中的var项目){
@DisplayFor(modelItem=>item.movieEmployeeID)
@DisplayFor(modelItem=>item.showID)
@ActionLink(“编辑”,“编辑”,新的{id=item.id})|
@ActionLink(“详细信息”,“详细信息”,新的{id=item.id})|
@ActionLink(“删除”,“删除”,新的{id=item.id})
}
下面是现在显示的内容
我想要的是显示实际姓名,而不是电影员工的ID
我如何正确实现这一点,以便索引显示员工的姓名而不是ID?
这是我的数据库关系图,显示了我的电影数据库中的Employee.Name和MovieEmployees.ID
非常感谢 为过早意外点击保存而道歉 创建一个ViewModel,如下所示:
public class MovieViewModel
{
public int MovieId{get;set;}
public int ShowId{get;set;}
public string EmployeeName{get;set;}
}
然后在控制器中
// GET: /Movies/
public ActionResult Index()
{
// the query can be better than this but just to get you started
// you can also do db.MovieEmployees.Where and pass a predicate to filter results
var model = db.MovieEmployees.Select(m=>new MovieViewModel{
MovieId = m.Movie.ID,
ShowId= m.Movie.ShowId,
EmployeeName = m.Employee.Name
});
return View(model);
}
然后视图将是(尽量保持简单)
@model IEnumerable
@{
ViewBag.Title=“Index”;
}
指数
@ActionLink(“新建”、“创建”)
员工姓名
显示ID
@foreach(模型中的var项目)
{
@DisplayFor(modelItem=>item.EmployeeName)
@DisplayFor(modelItem=>item.ShowID)
@ActionLink(“编辑”,“编辑”,新的{id=item.MovieId})|
@ActionLink(“详细信息”,“详细信息”,新的{id=item.MovieId})|
@ActionLink(“删除”,“删除”,新的{id=item.MovieId})
}
因此,您正在向视图发送viewModel所需的属性,而不发送其他属性。您可以从和了解有关MVC的更多信息。罗布·科纳利、斯科特·汉塞尔曼、乔恩·加洛韦、菲尔·哈克、斯科特·古思里、布拉德·威尔逊和其他人在MVC上提供了大量资料。您能告诉我们您的模型在哪里推广吗?此外,我建议您查看viewmodels,而不是在视图中强键入实体。您好!“填充”是指数据来自何处?如果是,则已预先输入。我是MVC的新手,所以我现在在一家公司实习,他们希望我能在各种各样的事情上进行练习。我首先从代码开始,然后是MVC,然后是SQL,现在我正在使用我用MVC创建的SQL数据库。所以一切都是预先准备好的,我把这个数据模型添加到这个MVC中。这有用吗?如果没有,请指导我你需要我做什么,非常感谢!我明白了,在这种情况下,我建议您从一个空的MVC项目开始,然后观看/阅读一些教程,以便更好地了解.NETMVC的工作原理。然后你可以做任何你想做的事情,因为你将编写代码而不是使用自动生成的代码:)哦,那么我可能应该删除自动生成的东西,编写我自己的索引之类的?我相信这也是我正在建立的东西,我只是害怕在这么早的时候就开始深入这个问题。我已经涉猎MVC大约40个小时了,但对我来说,这似乎还是很多。我只是建议从一张白板开始将是一个很好的学习过程,因为你必须写出所有的代码,这将有助于你在编写过程中了解你在写什么以及为什么要写。
@model IEnumerable<MovieViewModel>
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<p>
@Html.ActionLink("Create New", "Create")
</p>
<table class="table">
<tr>
<th>
Employee Name
</th>
<th>
Show ID
</th>
<th></th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.EmployeeName)
</td>
<td>
@Html.DisplayFor(modelItem => item.ShowID)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.MovieId }) |
@Html.ActionLink("Details", "Details", new { id=item.MovieId }) |
@Html.ActionLink("Delete", "Delete", new { id=item.MovieId })
</td>
</tr>
}
</table>