2017-12-13 18 views
-1

私は現在、.net Core 2.0を学習していて、かなり単純なWebアプリケーションを構築していますが、MVCの 'Model'構造。MVC .Net Core 2.0 | SQL Serverデータベースを照会し、結果をグリッドビューで返します

私はアプリケーションに持ち込みたい別のWindows Server VM上で動作するテスト用SQL Serverを持っています。

本質的にこのデータベースには、人のリストを含むテーブルが含まれています。私はちょうど私のアプリケーションページの1つのグリッドビューに単純なクエリでそのデータを表示したいだけです。

すなわちSELECT title, forename, surname, address_string, telnum FROM people;

私は、コードまたはこれを行う方法を通して私を歩くの優れたリソース/チュートリアルへのリンクのいずれかをいくつかのアドバイスをしたいと思います。

私は、Web開発から長い時間が経ってMVCを学んでいることを覚えておいてください。前回の経験では、データテーブルをASP Webフォームのグリッドビューにバインドしていました。

ありがとうございました。

+0

なぜ落選ですか?質問をする前に答えを知っていたのですか? – Molenpad

答えて

0

MVCでは、バインドするグリッドビューはなく、Webフォームとは異なりviewstatesもありません。モデルパーツでは、モデル/ドメインモデルとは別のビューモデルを使用するようにモデルパーツを拡張することをお勧めします。

ビュー・モデルとは、データベースからのデータをより細かく制御できるようにするものです。以下のPersonViewModelでは、テーブルの主キーにマップされているPersonIDを除外することにしました。私はまた、人のフルネーム(姓、ファーストネーム)を返すフィールドを追加しました。これらの変更はビューモデルにのみ分離され、ドメインモデルには影響しません。 (データベーステーブル/列にマップすることができます)

モデル:(基本的にあなたのページに表示するかについてのより詳細に制御できます)

public class Person 
{ 
    [Key] 
    public Guid PersonID { get; set; } 
    public string Title { get; set; } 
    public string ForeName { get; set; } 
    public string SurName { get; set; } 
    public string TelNum { get; set; } 
    public string AddressString { get; set; } 
} 

のViewModel:

public class PersonViewModel 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public string Address { get; set; } 
    public string Telephone { get; set; } 
    public string Title { get; set; } 

    public string FullName 
    { 
     get { return string.Format("{0}, {1}", this.LastName, this.FirstName); } 
    } 
} 

コントローラドメインモデルからビューモデルにフィールドの値を転送することができます。簡単にするために、)私は手動でフィールドの値を割り当てるために選択したが、これを簡略化しAutoMapperようなツールがあります:あなたはビューモデルを表示したい

public ActionResult Index() 
{ 
    // returns List<Person> from the database 
    var peopleList = datasource.GetPeople(); 

    var peopleVM = new List<PersonViewModel>(); 

    //create a list of PersonViewModels 
    foreach (person in peopleList) 
    { 
     var personVM = new PersonViewModel() 
     { 
      FirstName = person.ForeName; 
      LastName = person.SurName; 
      Address = person.AddressString; 
      Title = person.Title; 
      Telephone = person.TelNum;     
     }; 
     peopleVM.Add(personVM); 
    } 

    return View(peopleVM); 
} 

ビュー(「結合の概念は本当にありません。 」と箱から出しviewstates Webフォームではなく多くの組み込みコントロールgridviewsなどのような/あなたがtheseのようなMVCの拡張子)を使用しようとしている場合を除きリストビュー:良いリソースへのリンクについては

@model List<Namespace.Models.PersonViewModel> 

<table> 
    @foreach (person in Model) 
    { 
     <tr> 
      <td>person.FullName</td> 
      <td>person.Title</td> 
      <td>person.Telephone</td> 
      <td>person.Address</td> 
     </tr> 
    } 
</table> 

を、することができます」 this sitethis one tooで間違っています。

0

私の提案はここにネットコア2.0とEntity Frameworkのコア上のMicrosoftドキュメントで始まることになります。https://docs.microsoft.com/en-us/aspnet/core/data/ef-mvc/intro

、要約すると、あなたのMVC層としてネットコアを使用します、そして、あなたはエンティティを活用しましょうあなたのORM(基本的にデータベースの相互作用モデル)としてフレームワークコア。

そこには他の非MS ORMもありますが、私はこれまでにEFコアに精通していましたが、実際には古い「フル」エンティティフレームワークが必要な場合があります。 dはマイクロソフトのスタックに固執しています。なぜなら、それは一般にすべて一緒に機能するように設計されており、マイクロソフトは良いエンドツーエンドのチュートリアルを作成しているからです。

最初のチュートリアルを終えたら、グリッド、検索、並べ替えなどを処理するためのクライアントサイドライブラリを検討することをお勧めします。DataTablesは、JQueryとBootstrap (デフォルトのMVCテンプレートに含まれています)をそのまま使用することができます(https://datatables.net/)。また、このサイトでも適切なサポートを得ることができます。

関連する問題