如何从MVC模型中的SQL Server数据库一次检索一条记录

时间:2013-08-07 10:35:11

标签: c# sql sql-server asp.net-mvc

我正在开发Visual C#MVC项目。我在我的模型中使用EF数据库第一种方法。我的项目是关于开发一个用户可以购买应用程序的appmarket。我在主页中使用了局部视图,其中包含不同局部视图中不同应用程序的详细信息。在第一个局部视图中类似于App1,在第二个局部视图中类似于App2,依此类推。为此,我用于每个循环。

在每个局部视图中都有一个名为MoreInfo的链接,因此当用户点击它时,它们将进入MoreInfo页面。在数据库中,我有应用信息,应用程序成本,描述等字段,这些字段将显示在MoreInfo页面中。所有这些字段都在一个名为Apps表的表中。

当我遵循Enumerable.FirstOrDefault方法时,我只能从数据库中检索第一条记录。但现在我的问题是我需要在我的第一个MoreInfo视图中检索第一个记录,在第二个MoreInfo视图中检索第二个记录,依此类推。

我的控制器代码是:

public ActionResult MoreInfo()
{    
    var e = Enumerable.FirstOrDefault(db.AppmarketApps);

    return View(e);
}

并且在视图中使用了:

@model Market.Models.AppmarketApp

<h3><span class="grey"><a href="#">MARKETPLACE</a> &#8250;</span> @Model.Description</h3>

所以这里我得到了我不想要的所有MoreInfo视图的第一个记录描述。 提前谢谢。

3 个答案:

答案 0 :(得分:3)

扩展我的评论你应该使用应用程序的ID,然后将其传递给MoreInfo,如下所示:

public ActionResult MoreInfo(int id)
{    
    var e = db.AppmarketApps.Where(x => x.ID == id).FirstOrDefault();
    return View(e);
}

答案 1 :(得分:2)

将链接中感兴趣的应用的ID传递给MoreInfo,并根据该ID查询您的数据。

答案 2 :(得分:0)

最后在玩了我的代码后,我知道了解决方法。

在我有两个名为HomeController和MoreInfoController的控制器之前。但由于MoreInfo链接在主页本身,我删除了MoreInfo控制器并添加了代码到HomeControoler本身。这是我添加的代码:

public ActionResult MoreInfo(short id)
    {
        var e = db.AppmarketApps.Where(x => x.ID == id).FirstOrDefault();
        return View(e);
    }

这里我传递id作为参数,大写'ID'是我的主键。因为我想每个视图只显示一条记录,所以我使用了FirstOrDefault方法。

在我看来,我改变了这样的代码:

@Html.ActionLink("MoreInfo", "MoreInfo", new { id = item.ID }, new { @class = "greyButton" })

这里第一个参数“MoreInfo”是LinkName,第二个参数“MoreInfo”是链接。正如您在用户点击MoreInfo链接时所看到的那样,id将通过

传递给该链接
new { id = item.ID }. 

类用于样式目的。 要清楚上面代码的作用,它会将id传递给MoreInfo链接,并显示AppmarketApps表中的数据。

最后我在我的视图中使用@ Model.Name,如果我想显示'Name',我使用@ Model.Description,如果我想显示'Description'等等。

感谢所有帮助过我的人。