MVC数据访问

时间:2015-07-21 15:40:23

标签: asp.net-mvc entity-framework model-view-controller

我是MVC技术的新手。我已经将我的项目设置得很好,现在我想添加一些功能。我也创建了一个数据库并将其链接到我的项目中。

项目表

Id, 
Name,
...

错误表

Project Id,
Name,
...

在我的控制器的索引视图中,我可以看到可点击的整个项目列表。如果我按下例如项目“TEST”,我想显示一个新页面,只显示与TEST的项目ID匹配的错误。

我一整天都在这里,无法让它发挥作用。你会怎么做?

2 个答案:

答案 0 :(得分:2)

  1. 从我将假设您知道如何使用MVC支持CRUD视图开始。
  2. 因此,基于第1点,您可以为控制器Project [ProjectController]
  3. 创建视图[创建,编辑,列表,详细信息]
  4. 在控制器项目中,您可以编写名为BugDetails的操作,并在视图@Html.Action("BugDetails,Model.Id)
  5. 中调用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();