在MVC视图页面中显示对象列表

时间:2015-03-26 17:55:44

标签: c# sql asp.net-mvc model-view-controller

我正在做一个学校项目而且我被困住了。 我想要做的是..通过按页面上的按钮来调用执行读取sql查询的方法。然后,它创建填充了查询信息的Model对象,并将它们放入列表中。填充列表后,它应返回显示所有对象的视图。 (在我的例子中,视图将显示sql数据库中存在的所有“命令”)

我的按钮代码(我的方法叫做:LaadBestellingen,我的控制器叫做Beheer:

<button type="button" onclick="location.href='@Url.Action("LaadBestellingen", "Beheer")'"> LOAD ORDERS </button>

这是BeheerController方法:

public ActionResult LaadBestellingen()
    {
        try
        {
            conn.Open();
            String selectQuery = "SELECT voornaam, achternaam, adres, postcode, email, telefoon, totaalprijs , datum FROM bestelling b JOIN klant k ON k.idklant = b.idklant JOIN product p ON p.idproduct = b.idproduct;";
            MySqlCommand cmd = new MySqlCommand(selectQuery, conn);
            MySqlDataReader dataReader = cmd.ExecuteReader();

            List<Bestelling> bestellingenlijst = new List<Bestelling>();

            while (dataReader.Read())
            {
                Bestelling bestelling = new Bestelling();

                bestelling.Klantvoornaam = dataReader.GetString("voornaam");
                bestelling.Klantachternaam = dataReader.GetString("achternaam");
                bestelling.Klantadres = dataReader.GetString("adres");
                bestelling.Klantpostcode = dataReader.GetString("postcode");
                bestelling.Klantemail = dataReader.GetString("email");
                bestelling.Klanttelefoon = dataReader.GetString("telefoon");
                bestelling.Totaalprijs = dataReader.GetDouble("totaalprijs");

                bestellingenlijst.Add(bestelling);

            }


                return View(bestellingenlijst);


        }

        catch (Exception e)
        {
            Console.Write("Er is een fout opgetreden tijdens laden van de bestellingen", e);
            return View("Index");

        }
        finally
        {
            conn.Close();
        }
    }

最后这是我视图的代码,它与LaadBestellingen方法的名称相同:

@using WebWinkelGroep16.Models;
@model List<Bestelling>

跳过一些HTML代码,这里的内容是显示的内容:

 <div id="content">
        <ul>
            @{
                foreach (Bestelling element in @Model)
                {                      
                     <li>   Voornaam: @element.Klantvoornaam <br /> </li>
                      <li>  Achternaam: @element.Klantachternaam<br /></li>
                       <li> Adres: @element.Klantadres<br /></li>
                       <li>  Postcode: @element.Klantpostcode<br /></li>
                     <li>   Email: @element.Klantemail <br /></li>
                     <li>   Telefoon: @element.Klanttelefoon<br /></li>
                     <li>   Totaalprijs: @element.Totaalprijs<br /></li>

                }
            }
        </ul>
    </div>

我做错了什么?当我尝试执行SQL查询时,它可以作为一个魅力,并显示所有要求的信息。由于某种原因,它总是将我发送到catch中的返回视图。

1 个答案:

答案 0 :(得分:0)

如果您按照以下方式编写查询:

String selectQuery = @"SELECT voornaam
, achternaam
, adres
, postcode
, email
, telefoon
, totaalprijs 
, datum 
FROM bestelling b 
JOIN klant k ON k.idklant = b.idklant 
JOIN product p ON p.idproduct = b.idproduct;";

您会看到实际选择datum列。只需删除它。看看发生了什么。