我是MVC技术的新手。我已经将我的项目设置得很好,现在我想添加一些功能。我也创建了一个数据库并将其链接到我的项目中。
项目表
Id,
Name,
...
错误表
Project Id,
Name,
...
在我的控制器的索引视图中,我可以看到可点击的整个项目列表。如果我按下例如项目“TEST”,我想显示一个新页面,只显示与TEST的项目ID匹配的错误。
我一整天都在这里,无法让它发挥作用。你会怎么做?
答案 0 :(得分:2)
@Html.Action("BugDetails,Model.Id)
Details
醇>
在项目控制器中
public ActionResult BugDetails(int id)
{
using(var db = new YourDbContext())
{
var bugs = db.Bugs.Where(m=> m.ProjectId == id);
return PartialView(bugs);
}
}
<强> BugDetails.cshtml 强>
@model IEnumerable<YourProject.Models.Bug>
<table>
<tr>
<th>Bug Name</th>
</tr>
@foreach(var bug in Model)
{
<tr>
<td>@bug.Name</td>
</tr>
}
</table>
与Project controller相关的Details.cshtml
@model YourProject.Models.Project
//... the details view goes here
@Html.Action("BugDetails","Project",new {id= Model.id}) // Project can be changed depends on how you called your project controller, I assumed that you called it *ProjectController*
上面的代码将在项目的详细信息视图中呈现相关的错误
我希望这会对你有所帮助
答案 1 :(得分:1)
好的,我会假设你有这样的clasess:
public class Project
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
...
public ICollection<Bug> Bugs{ get; set; }
}
public class Bug
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
...
public int ProjectId { get; set; }
[ForeignKey("ProjectId")]
public virtual Project Project { get; set; }
}
然后获取gven项目的bug集合:
var bugs = _dbContext.Bugs.Where(p => p.ProjectId == id).ToList();