2016-04-22 22 views
0

私はMVCプロジェクトを作成しました。デフォルトのビューとコントローラがあります。 2つの実テーブルとビュー(dbビュー)をカバーするように拡張されたモデルがあります。そのビューと少なくとも1つのテーブルは、データのソート後に表示する必要があります。私はモデルをオンラインで作成するという単純な例しか見ていません。私は何の単語を検索するか分からない。 index.cshtmlビューにテーブルデータを注文するASP.NET MVCモデル

using System.Data.Entity; 

    namespace XYZ.Models 
    { 
     public partial class XYZModel : DbContext 
     { 
      public XYZModel() 
       : base("name=XYZModel") 
      { 
      } 

      public virtual DbSet<DockItemsByDept> DockItemsByDept { get; set; } 

      protected override void OnModelCreating(DbModelBuilder modelBuilder) 
      { 
       modelBuilder.Entity<DockItemsByDept>() 
        .Property(e => e.Id); 
       modelBuilder.Entity<DockItemsByDept>() 
        .Property(e => e.Name) 
        .IsUnicode(false); 
       modelBuilder.Entity<DockItemsByDept>() 
        .Property(e => e.Dept); 
       modelBuilder.Entity<DockItemsByDept>() 
        .Property(e => e.Code); 
      } 
     } 
    } 

が、私は行くことができます:だから、私はこのクラスを参照モデル定義を持って

using System.Data.Entity; 

    namespace XYZ_dbo.Models { 
     using System; 
     using System.Collections.Generic; 
     using System.ComponentModel.DataAnnotations; 
     using System.ComponentModel.DataAnnotations.Schema; 
     using System.Data.Entity.Spatial; 
     using System.Linq; 
     using System.Text; 

     [Table("dbo.DockItemsByDept")] 
     public partial class DockItemsByDept 
     { 
      public int Id { get; set; } 

      [Required] 
      [StringLength(128)] 
      public string Name { get; set; } 
      public int Dept { get; set; } 
      public int Code { get; set; } 
     } 
    } 

デシベル・ビューの列を定義する独自のファイル内のクラスを持っていますそして

@model IEnumerable<ITG_Calendar_Reservations.Models.DockItemsByDept> 

    <div class="content"> 
     @foreach (var log in Model) 
     { 
      <p>@log.Name</p> 
     } 
    </div> 

と言っていますが、私はDBが生成するデフォルトの順序を取得しています。私はCodeフィールド、次にNameフィールドでソートされたこの「ビュー」データを必要としますが、そのような操作やフィルターをどこに適用するべきかはわかりません。私はと思ってこれはモデルになりますが、私はどこに行かなければならないのか分かりません。

アイデア?

+1

ここの「XYZModel」は実際にはモデルではなく、プログラムとデータベースの間のモデルの状態を管理するためのコンテキストです。あなたは 'XYZContext'と呼ぶことができます。物事を少し理解しやすくするかもしれない。 – casperOne

+0

uh、ok。私はあなたにこれについて全く議論していません。 Visual Studioはそれを「モデル」と呼び、初期DB接続をセットアップするときにその名前を付けました。 –

答えて

2

を必要に応じてこれを試してみてください出力を注文するのLINQを使用することができるはずです:あなたはビューにそれを送信する前に

@foreach (var log in Model.OrderBy(m => m.Code).ThenBy(m => m.Name)) 

また、あなたがモデルを並べ替えることができます。

+0

クール!ありがとうございました。ビューに送信する前にどのように並べ替えますか? –

+2

ほとんど同じように、注文コードをデータベースから取り込んでモデルを作成する場所に移動するだけです。あなたの*コード*は同じように見えますが、実際にはデータベース内で順序付けが行われます。これは、 'myModel = db.DockItemsByDepts.OrderBy(m => m.Code).ThenBy(m => m.Name) ' –

+0

申し訳ありません、私は厚くなければならないが、あなたは"注文コードをデータベースからデータを取り出す場所に移動する "と言った。私は上記のコードを見て、私はその場所があるべき/そうでなければならないとは思わない。舞台裏で起こっているようだ。 –

1

あなたは

foreach (var log in Model.OrderBy(m => m.Code).ThenBy(m => m.Name)) 
関連する問題