我刚刚开始学习 MVC 4 ASP.NET。我正在使用名为 MVC Music Store 的教程作为起点。我有一个名为“订单”的数据库表,其中包含许多记录。我决定尝试在表格中显示所有订单。这是订单模型:
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Web.Mvc;
namespace MvcMusicStore.Models
{
[Bind(Exclude = "OrderId")]
public partial class Order
{
[ScaffoldColumn(false)]
public int OrderId { get; set; }
[ScaffoldColumn(false)]
public System.DateTime OrderDate { get; set; }
[ScaffoldColumn(false)]
public string Username { get; set; }
[Required(ErrorMessage = "First Name is required")]
[DisplayName("First Name")]
[StringLength(160)]
public string FirstName { get; set; }
[Required(ErrorMessage = "Last Name is required")]
[DisplayName("Last Name")]
[StringLength(160)]
public string LastName { get; set; }
[Required(ErrorMessage = "Address is required")]
[StringLength(70)]
public string Address { get; set; }
[Required(ErrorMessage = "City is required")]
[StringLength(40)]
public string City { get; set; }
[Required(ErrorMessage = "State is required")]
[StringLength(40)]
public string State { get; set; }
[Required(ErrorMessage = "Postal Code is required")]
[DisplayName("Postal Code")]
[StringLength(10)]
public string PostalCode { get; set; }
[Required(ErrorMessage = "Country is required")]
[StringLength(40)]
public string Country { get; set; }
[Required(ErrorMessage = "Phone is required")]
[StringLength(24)]
public string Phone { get; set; }
[Required(ErrorMessage = "Email Address is required")]
[DisplayName("Email Address")]
[RegularExpression(@"[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}",
ErrorMessage = "Email is is not valid.")]
[DataType(DataType.EmailAddress)]
public string Email { get; set; }
[ScaffoldColumn(false)]
public decimal Total { get; set; }
public List<OrderDetail> OrderDetails { get; set; }
}
}
我可以使用 razor View 显示数据库结果,但它会在一个非常长的表格的一页上显示每个 View 。
我的问题是,有没有办法让页面只显示 20 个订单,然后我可以单击下一页查看接下来的 20 个订单?为了让您了解整个过程的工作原理,我只是使用 Entity Framework 进行“代码优先”(Microsoft 似乎在他们的大部分教程中都鼓励这种方法):
using System.Data.Entity;
namespace MvcMusicStore.Models
{
public class MusicStoreEntities : DbContext
{
public DbSet<Order> Orders { get; set; }
public DbSet<OrderDetail> OrderDetails { get; set; }
}
}
Controller :
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MvcMusicStore.Models;
namespace Test.Controllers
{
public class OrdersController : Controller
{
private MusicStoreEntities db = new MusicStoreEntities();
//
// GET: /Orders/
public ActionResult Index()
{
return View(db.Orders.ToList());
}
}
}
这是 Razor View :
@model IEnumerable<MvcMusicStore.Models.Order>
@{
ViewBag.Title = "Index";
}
<h2>Orders Overview</h2>
<br />
<div class="CSSTableGenerator" >
<table>
<tr>
<td>
@Html.DisplayNameFor(model => model.OrderId)
</td>
<td>
@Html.DisplayNameFor(model => model.OrderDate)
</td>
<td>
@Html.DisplayNameFor(model => model.Username)
</td>
<td>
@Html.DisplayNameFor(model => model.Total)
</td>
<td>
@Html.DisplayNameFor(model => model.FirstName)
</td>
<td>
@Html.DisplayNameFor(model => model.LastName)
</td>
<td>
@Html.DisplayNameFor(model => model.Address)
</td>
<td>
@Html.DisplayNameFor(model => model.City)
</td>
<td>
@Html.DisplayNameFor(model => model.State)
</td>
<td>
@Html.DisplayNameFor(model => model.PostalCode)
</td>
<td>
@Html.DisplayNameFor(model => model.Country)
</td>
<td>
@Html.DisplayNameFor(model => model.Phone)
</td>
<td>
@Html.DisplayNameFor(model => model.Email)
</td>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.OrderId)
</td>
<td>
@Html.DisplayFor(modelItem => item.OrderDate)
</td>
<td>
@Html.DisplayFor(modelItem => item.Username)
</td>
<td>
@Html.DisplayFor(modelItem => item.Total)
</td>
<td>
@Html.DisplayFor(modelItem => item.FirstName)
</td>
<td>
@Html.DisplayFor(modelItem => item.LastName)
</td>
<td>
@Html.DisplayFor(modelItem => item.Address)
</td>
<td>
@Html.DisplayFor(modelItem => item.City)
</td>
<td>
@Html.DisplayFor(modelItem => item.State)
</td>
<td>
@Html.DisplayFor(modelItem => item.PostalCode)
</td>
<td>
@Html.DisplayFor(modelItem => item.Country)
</td>
<td>
@Html.DisplayFor(modelItem => item.Phone)
</td>
<td>
@Html.DisplayFor(modelItem => item.Email)
</td>
<td>
@Html.ActionLink("Details", "Details", new { id=item.OrderId }) |
@Html.ActionLink("Delete", "Delete", new { id=item.OrderId })
</td>
</tr>
}
</table>
</div>
第二个问题,表中每个订单的总价始终为 0.0。但是所有其他字段都是正确的。感谢提示。
最佳答案
关于你的第一个问题......分页是你想要完成的,有几个很好的指南可以帮助你完成这个。就我个人而言,我建议学习 Linq/Entity Framework/MVC Framework 的使用,因为一旦您更好地了解它们,分页位应该非常容易添加。
关于你的第二个问题...
您可以使用服务器资源管理器检查数据库的内容,这是我开始验证总计是否确实存在的地方!
要使其正常工作,您可能必须使用添加连接实用程序(如果尚未设置),该实用程序位于图像中显示的“数据”中“t”的正上方。
关于mysql - ASP.NET MVC 显示数据库表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11488557/