【问题标题】:MVC data accessMVC 数据访问
【发布时间】:2015-10-11 04:18:19
【问题描述】:

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

项目表

Id, 
Name,
...

错误表

Project Id,
Name,
...

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

我整天都在处理这个问题,但无法让它工作。你会怎么做?

【问题讨论】:

  • 如果您是 MVC 新手,您需要遵循一个基本教程来了解其中使用的原理和模式。我推荐 ASP.NET 网站。
  • 你在使用实体框架吗?代码优先还是数据库优先?
  • 正如@Frederick Marcoux 建议的那样,如果您刚开始使用 MVC,它可能是有用的教程。这是一个很好的:asp.net/mvc/overview/getting-started/introduction/…
  • 您可以进行一个名为 BugDetails 的操作,该操作采用参数 ProjectId 并返回 ParttailView db.Bugs.Where(m=> m.ProjectId==ProjectId) 的结果并在您的项目视图中调用 @ Html.Action("BugDetails","ProjectControllerName",new {ProjectId = Model.Id),如果仍然感到困惑,我将在答案中提供示例
  • @user5135401,您的回答将不胜感激。谢谢大家的回复。

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


【解决方案1】:
  1. 首先我假设您知道如何使用 MVC 构建 CRUD 视图。
  2. 因此,基于第 1 点,您的控制器项目 [ProjectController] 具有视图 [创建、编辑、列表、详细信息]
  3. 在控制器项目中,您可以编写一个名为 BugDetails 的操作,并在视图 Details 中调用 @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);
     }
 }

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>

与项目控制器相关的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*

以上代码会在项目详情视图中渲染相关的bug

希望对你有帮助

【讨论】:

  • 终于我让它工作了,基本上就像你提到的那样。现在我有另一个问题..
  • @Aldridge1991 喜欢什么?最好向 www.asp.net/mvc 学习,可以从 MVC3 开始,一步步上上版本
【解决方案2】:

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

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 项目的错误集合:

var bugs = _dbContext.Bugs.Where(p => p.ProjectId == id).ToList();

【讨论】:

    猜你喜欢
    • 2012-05-12
    • 2013-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-03
    • 2011-07-17
    • 1970-01-01
    • 2011-03-27
    相关资源
    最近更新 更多