Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc MVC数据访问_Asp.net Mvc_Entity Framework_Model View Controller - Fatal编程技术网

Asp.net mvc MVC数据访问

Asp.net mvc MVC数据访问,asp.net-mvc,entity-framework,model-view-controller,Asp.net Mvc,Entity Framework,Model View Controller,我是MVC技术的新手。我已经设置好了我的项目,现在我想添加一些功能。我还创建了一个数据库并将其链接到我的项目 项目表 Id, Name, ... Project Id, Name, ... 错误表 Id, Name, ... Project Id, Name, ... 在我的控制器的索引视图中,我可以看到整个项目列表,可以单击。如果我按下例如project“TEST”,我想显示一个新页面,只显示与TEST的project ID匹配的bug 我一整天都在忙这个,没法让它工作。你会怎么做

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

项目表

Id, 
Name,
...
Project Id,
Name,
...
错误表

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


我一整天都在忙这个,没法让它工作。你会怎么做?

好的,我假设你有这样的课程:

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; }

}
  • 从我假设您知道如何使用MVC构建CRUD视图开始
  • 因此,基于第1点,您拥有控制器项目[ProjectController]的视图[Create、Edit、List、Details]
  • 在控制器项目中,您可以编写一个名为BugDetails的操作,并在视图中调用
    @Html.action(“BugDetails,Model.Id)
  • 项目控制器内部

     public ActionResult BugDetails(int id)
     {
         using(var db = new YourDbContext())
         {
              var bugs = db.Bugs.Where(m=> m.ProjectId == id);
              return PartialView(bugs);
         }
     }
    
    @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*
    
    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>
    
    上面的代码将在项目的详细视图中呈现相关的bug


    我希望这将帮助你

    如果你是MVC新手,你需要遵循一个基本的教程来理解其中使用的原理和模式。我推荐ASP.NET网站。你是使用实体框架吗?代码优先还是数据库优先?正如@Frederick Marcoux推荐的,如果你刚开始使用MVC,这将是一个有用的教程。我在这里这是一个很好的方法:您可以执行一个名为BugDetails的操作,该操作接受参数ProjectId,并返回db.Bugs.Where(m=>m.ProjectId==ProjectId)的PartailView结果,在项目视图中调用@Html.action(“BugDetails”,“ProjectControllerName”,new{ProjectId=Model.Id),如果仍然困惑,我将提供样品answer@user5135401,您的回答将非常感谢。谢谢您的回复。最终我成功了,基本上如您所述。现在我还有另一个问题。@Aldridge1991,比如什么?最好从www.asp.net/mvc学习,您可以从MVC3开始,逐步升级