2012-07-15 2 views
1

저는 MVC 4 ASP.NET을 배우기 시작했습니다. MVC 뮤직 스토어라는 튜토리얼을 시작으로 사용하고 있습니다. 많은 레코드가 들어있는 'Orders'라는 데이터베이스 테이블이 있습니다. 나는 모든 주문을 테이블에 표시하기로 결정했다. 여기에 주문 모델 :ASP.NET MVC 데이터베이스 테이블 표시

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._%+-][email protected][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; } 
    } 
    } 

나는 면도칼 뷰를 사용하여 데이터베이스 결과를 표시 할 수 있지만, 그것은 매우 긴 테이블의 한 페이지에 모든보기를 표시합니다.

내 질문은 페이지가 20 개의 주문을 표시하고 다음 페이지를 클릭하여 다음 20 개를 볼 수 있도록 만드는 방법이 있습니까?

using System.Data.Entity; 

namespace MvcMusicStore.Models 
{ 
public class MusicStoreEntities : DbContext 
{ 
    public DbSet<Order> Orders { get; set; } 
    public DbSet<OrderDetail> OrderDetails { get; set; } 
} 
} 

컨트롤러 :

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()); 
    } 


} 
} 
이 전체 프로세스가 작동하는 방법을 알고 그냥, 그래서 난 그냥 (마이크로 소프트는 튜토리얼의 대부분이 방식을 장려 할 것) 엔티티 프레임 워크를 사용하여 '첫 번째 코드'를하고있는 중이 야 ,

@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 점이다 :

이 은 면도기이다. 그러나 다른 모든 필드는 정확합니다. 팁 주셔서 감사.

+0

데이터베이스를보고 나서 0.0 이외의 다른 것으로 저장되었는지 확인 했습니까? – Jared

+0

데이터베이스 액세스를 위해 Entity Framework를 사용하고 있습니까? – Jared

+0

예 System.Data.Entity를 사용하여 볼 수있는 Entity Framework를 사용하고 있습니다. 컨텍스트 모델에서. 내가 뭘 말하는지 모르겠기 때문에 데이터베이스 (SQL Server Compact Edition)를 보지 않았습니다. – user1448260

답변

1

첫 번째 질문과 관련하여 ... 페이지 매김은 당신이 달성하기를 원하는 것이며이를 달성하는 방법에 대한 몇 가지 좋은 가이드가 있습니다. 당신이 그 조금 더 매김 비트에 추가 할 무척 용이해야한다 알고 한 번 개인적으로 나는 Linq에/엔티티 프레임 워크가/MVC 프레임 워크의 사용을 학습 권하고 싶습니다.

Pagination Tutorial

을 두 번째에 관해서 질문 ...

총합이 실제로 존재하는지 확인하기 시작할 서버의 내용을 확인하려면 서버 탐색기를 사용할 수 있습니다! 이를 위해

Server Explorer

은 (이미 설정이 아니라면) 직접 영상에서 "데이터"쇼에서 "t"위의 사진되는 추가 연결 유틸리티를 사용 할 수 있습니다 작동합니다.

+0

감사합니다. 페이지 매김을보고 있습니다. 위에서 설명한 방법으로 데이터베이스 주문 표를 살펴 보았습니다. 실제로 각 행의 합계는 0.00입니다. 왜 데이터베이스에 추가되지 않는가? 관련된 모든 코드는 원래의 질문에 있습니다. 도움을 주셔서 감사합니다! – user1448260

+0

@ user1448260 데이터베이스를 채우는 코드가 실제로 표시되지 않습니다. – Jared