【发布时间】:2019-01-19 07:27:37
【问题描述】:
对不起,如果问题措辞不好,但我很困惑,而且很晚了,但我会尽力解释。所以我试图在不使用实体框架的情况下将数据库中的所有订单显示到一个表中。问题是当我去 orders/getAllOrders 时,我得到一个大错误,上面写着“视图”,然后是一堆
<tr><td>2</td><td>Javier</td><td>1</td><td>Groovestring</td><td>3.950000</td></tr>etc..
里面有我的数据,但我不知道如何正确显示它。我知道我的查询工作正常,我的数据检索正常,但我很难显示它
这是我目前拥有的控制器。
namespace Website.Controllers
{
public class OrderController : Controller
{
private static bool CanConnectToDb()
{
var cnn = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString);
try
{
cnn.Open();
return true;
}
catch (Exception exception)
{
return false;
}
finally
{
if (cnn.State != ConnectionState.Closed)
cnn.Close();
}
}
public ActionResult getAllOrders()
{
// Connect to Database
var cnn = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString);
cnn.Open();
// Create Command
SqlCommand cmd = new SqlCommand(
@"SELECT CustomerOrderId, FirstName ,ProductId, [Name], Price
FROM OrderProduct AS o
INNER JOIN CustomerOrder co ON co.id = o.CustomerOrderId
INNER JOIN Product p ON p.Id = o.ProductId
INNER JOIN Customer c ON c.Id = co.CustomerId
ORDER BY ProductId"
);
cmd.Connection = cnn;
string store = "";
// Read from Database
SqlDataReader reader = cmd.ExecuteReader();
var orders = new OrderIndexViewModel();
while (reader.Read())
{
orders.CustomerOrderId = reader.GetInt32(0);
orders.FirstName = reader.GetString(1);
orders.ProductId = reader.GetInt32(2);
orders.Name = reader.GetString(3);
orders.Price = reader.GetDecimal(4);
store += "<tr><td>" + orders.CustomerOrderId + "</td><td>" + orders.FirstName + "</td><td>" + orders.ProductId + "</td><td>" + orders.Name + "</td><td>" + orders.Price + "</td></tr>";
}
cnn.Close();
return View(store);
}
}
}
编辑:当我将返回更改为
rerturn View(orders);
我收到此错误
The model item passed into the dictionary is of type 'Website.Models.OrderIndexViewModel', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable`1[Website.Models.OrderIndexViewModel]'.
这是我的模特
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace Website.Models
{
public class OrderIndexViewModel
{
public int CustomerOrderId { get; set; }
public string FirstName { get; set; }
public int ProductId { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
}
}
最后这是我的观点
@model IEnumerable<Website.Models.OrderIndexViewModel>
@{
ViewBag.Title = "getAllOrders";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>getAllOrders</h2>
<p>
@Html.ActionLink("Create New", "Create")
</p>
<table class="table">
<tr>
<th>
Customer Oder Id
</th>
<th>
First Name
</th>
<th>
ProductId
</th>
<th>
Name
</th>
<th>
Price
</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.CustomerOrderId)
</td>
<td>
@Html.DisplayFor(modelItem => item.FirstName)
</td>
<td>
@Html.DisplayFor(modelItem => item.ProductId)
</td>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
@Html.DisplayFor(modelItem => item.Price)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { /* id=item.PrimaryKey */ }) |
@Html.ActionLink("Details", "Details", new { /* id=item.PrimaryKey */ }) |
@Html.ActionLink("Delete", "Delete", new { /* id=item.PrimaryKey */ })
</td>
</tr>
}
</table>
任何帮助将不胜感激
【问题讨论】:
-
你的方法返回一个
string- 你需要返回一个OrderIndexViewModel的集合
标签: c# asp.net sql-server asp.net-mvc razor