使用MVC&amp ;;查看数据库中的数据实体框架

时间:2018-03-20 14:14:51

标签: c# asp.net-mvc entity-framework

我正在尝试查看数据库中的项目列表(我正在使用实体框架)。

我的存储库方法:

public List<string> getListOfItems(int i)
{
    return (from x in db.Items where x.ID == i select x.Text).ToList();
}

我的控制器:

public ActionResult Index()
{
    var itemOutput = repo.getListOfItems(1); // I just put 1 since I didn't know how to specify "i" - However theoretically it should return first item in database but its not
    ViewBag.itemOutput = itemOutput ;

    return View();
}

型号:

public class items
{
    [Key]
    public int ID{ get; set; }
    public string name{ get; set; }
    public string quantity{ get; set; }
}

ItemModel:

public class itemModels
{ 
    public List<List<string>> itemData{ get; set; }
}

查看:

@foreach (var item in ViewBag.itemOutput )
{
    <table id="t01">
        <tr>
            <td>@item.name</td>
        </tr>
    </table>
}

2 个答案:

答案 0 :(得分:2)

答案:

ViewBag.itemOutputList<string>itemstring

因此,在您的视图中使用@item代替@item.name(因为string没有.name属性):

@foreach (var item in ViewBag.itemOutput )
{
    <table id="t01">
        <tr>
            <td>@item</td>
        </tr>
    </table>
}

另外,要获得完整列表,您可以这样做:

public List<string> getListOfItems()
{
    return (from x in db.Items select x.Text).ToList();
}

然后只需拨打getListOfItems()没有参数。

随机评论:

1)不要在类名中使用复数,除非该类有点集合了

--> public class item // without s

2)您在评论中表示items已满varchar,根据您的班级定义,这是不真实的(您有IDname&amp; {{1} })。

3)对quantity使用string有点奇怪。

4)您确实可以将quantity方法更改为:

getListOfItems

但您应该将视图更改回public List<item> getListOfItems() { return (from x in db.Items select x).ToList(); // which can be simplified to: // return db.Items.ToList(); }

但是这可以让你做到:

@item.name

5)你有@foreach (var item in ViewBag.itemOutput ) { <table id="t01"> <tr> <td>@item.name</td> <td>@item.quantity</td> </tr> </table> } ,但你没有使用它。您可以修改它并使用它而不是ItemModel

答案 1 :(得分:0)

getListOfItems()返回一个字符串列表,但是你指的是ViewBag.itemOutput中的一个实际对象

而不是选择x.Text执行选择x,并返回值List<items>

public List<items> getListOfItems(int i)
{
    return (from x in db.Items where x.ID == i select x).ToList();
}

然后你可以保持你的剃刀模板相同,以引用@ item.name