藤本  結衣

藤本 結衣

1648865700

データを取得するためにMVC、Entity Framework、およびHttpClientを使用するASP.NET Web API

.NET 4.5には、WebClientの制限を克服するためのHttpClientクラスが含まれています。HttpClientクラスは、ローカルIISWebサーバーでホストされているWebAPIとの間でデータを送受信します。HttpClientは、WindowsフォームアプリケーションやWindowsサービスアプリケーションなど、他の.NETアプリケーションにも存在します。以下に説明するように、さまざまなHTTP要求を送信するHttpClientのメソッドは多数あります。

メソッド名メソッドの説明
GetAsync指定されたURIに非同期操作としてGETリクエストを送信します。
GetByteArrayAsync指定されたURIにGET要求を送信し、非同期操作で応答本文をバイト配列として返します。
GetStreamAsync指定されたURIにGET要求を送信し、非同期操作で応答本文をストリームとして返します。
GetStringAsync指定されたURIにGET要求を送信し、非同期操作で応答本文を文字列として返します。
PostAsync指定されたURIに非同期操作としてPOSTリクエストを送信します。
PostAsJsonAsync指定された値をJSONとしてシリアル化して、指定されたURIに非同期操作としてPOSTリクエストを送信します。
PostAsXmlAsync指定された値をXMLとしてシリアル化して、指定されたUriに非同期操作としてPOSTリクエストを送信します。
PutAsync非同期操作として、指定されたURIにPUT要求を送信します。
PutAsJsonAsync指定された値をJSONとしてシリアル化して、指定されたUriに非同期操作としてPUTリクエストを送信します。
PutAsXmlAsync指定された値をXMLとしてシリアル化して、指定されたUriに非同期操作としてPUT要求を送信します。
DeleteAsyncDELETEリクエストを指定されたURIに非同期操作として送信します。

 

説明

このセッションでは、jQueryを使用する代わりに、コントローラークラスファイルにAsp.Net WebAPIURLを実装する方法を紹介します。Httpclientクラスを使用してSQLサーバーからデータを取得することができます。

以下に説明するように、以前のセッションを実行します。

ソースコード

従うべきステップ:

ステップ1

パート3のセッションに基づいて、この現在のセッションでHttpClientを使用してデータを取得します。パート4を実行する前に、前のセッションにアクセスしてください。

ここでは、SatyaConsumingApiプロジェクトの「ホーム」コントローラーに「Part2」アクションを追加しました。

コード参照

using System;  
using System.Collections.Generic;  
using System.Linq;  
using System.Net.Http;  
using System.Web;  
using System.Web.Mvc;  
using Entities;  
  
namespace SatyaConsumingApi.Controllers  
{  
    public class HomeController : Controller  
    {  
        public ActionResult Part1()  
        {  
            return View();  
        }  
  
        public ActionResult Part2()  
        {  
            List<Employee> list = new List<Employee>();  
            HttpClient client = new HttpClient();  
            var result = client.GetAsync("http://localhost:47250/api/satya").Result;  
            if (result.IsSuccessStatusCode)  
            {  
                list = result.Content.ReadAsAsync<List<Employee>>().Result; 

            }  
            return View(list);  
        }  
  
    }  
}  

コードの説明

HttpClientクラスは、URLからHTTP要求/応答を送受信するための基本クラスを提供します。

HttpClient client = new HttpClient(); 

HttpClientクラスにアクセスするには、以下に説明するように名前空間に言及する必要があります...

using System.Net.Http; 

ここでは、インデックスからアクセスできる、強く型付けされたオブジェクトのリストを追加しました。従業員はエンティティモデルクラスです。Employeeクラスのプロパティにアクセスするには、パート3で説明したように、以下の名前空間を使用します。

using Entities; 

ノート 

SatyaWebApiプロジェクトのSatyaControllerに以下の名前空間を追加することを忘れないでください。プロジェクト「CrystalGranite2016Entities」のようにデータコンテキストを使用する場合、またはプロジェクトで「Employee」としてエンティティデータモデルクラスファイルを使用する場合は、下記のクラスライブラリ名と同じ名前。

using Entities; 

ここで、エンティティはクラスライブラリ名に他なりません。そうでない場合、「usingディレクティブまたはアセンブリ参照がありませんか?」というエラーが発生します。

var result = client.GetAsync("http://localhost:47250/api/satya").Result; 

GetAsyncは、指定されたUriに非同期操作としてgetリクエストを送信するHttpClientクラスのメソッドです。ここでは、データを取得するためにSatyaWebApiプロジェクトのURLを追加しました。

次に、このHttpResponseMessegeから結果値を取得した後、条件をチェックして、HTTP応答が成功したかどうかを示す値を取得します。HttpResponseMessageは、アクションからメッセージ/データを返す方法です。HttpResponseMessageはHTTPプロトコルと連携して、ステータス/エラーのあるデータを返します。HTTPResponseMessageを使用して、データといくつかのユーザーフレンドリーなメッセージを返すことができます。

var result = client.GetAsync("http://localhost:47250/api/satya").Result;  
            if (result.IsSuccessStatusCode)  
            {  
                
            } 

結果が成功すると、以下のコードが実行されます。

if (result.IsSuccessStatusCode)  
            {  
                list = result.Content.ReadAsAsync<List<Employee>>().Result;  
            } 

このコード行は、HTTP応答メッセージのコンテンツを取得または設定します。コンテンツインスタンスから指定されたタイプのオブジェクトを生成するタスクを返します。  

ノート 

このReadAsAsyncメソッドにアクセスするには、NuGetパッケージマネージャーコンソールを使用して1つのパッケージをインストールする必要があります。そうしないと、「System.Net.Http.HttpContent'には'ReadAsAsync'の定義が含まれておらず、拡張メソッドがありません」というエラーメッセージが表示されます。

PM> install-package Microsoft.AspNet.WebApi.Client 

または

、プロジェクトを右クリックして、[NuGetパッケージの管理]に移動し、Microsoft.AspNet.WebApi.Clientを検索してインストールすると、拡張メソッドにアクセスできるようになります。 

これは、System.Net.Http.Formattingの拡張メソッドです。System.Net.Http.Formatting NuGetパッケージページによると、System.Net.Http.Formattingパッケージはレガシーであり、代わりにNuGetで利用可能なMicrosoft.AspNet.WebApi.Clientパッケージにあります。 

次に、応答にビューをレンダリングするモデルを使用して、ビュー結果オブジェクトを作成します。

return View(list);  

ステップ2

SatyaConsumingApiプロジェクトにHomeControllerのPart2()コントローラーアクションメソッドのビューを追加します。

アクションメソッドを右クリックします(ここではフォームアクションを右クリックします)>ビューを追加...>[強く型付けされたビューを作成する]チェックボックスをオンにします>モデルクラスを選択します>>追加します。ここでのモデルクラスは「従業員(エンティティ)」です。

 

コード参照

@model IEnumerable<Entities.Employee>  
  
@{  
    ViewBag.Title = "Satyaprakash - Fetch data from WebAPI using HTTPClient";  
}  
  
<style>  
    table {  
        font-family: arial, sans-serif;  
        border-collapse: collapse;  
        width: 100%;  
    }  
  
    td, th {  
        border: 1px solid #dddddd;  
        text-align: left;  
        padding: 8px;  
    }  
  
    tr:nth-child(even) {  
        background-color: #dddddd;  
    }  
</style>  
  
    <div style="padding:10px ; align-content:center">  
        <fieldset>  
            <legend style="font-family:Arial Black;color:blue">Get Data From Web API Using HTTPClient</legend>  
        </fieldset>  
    </div>  
  
  
    <div id="updatePanel" style="width:90%; padding:10px; margin:0 auto;">  
        <table class="table table-responsive table-striped table-bordered">  
            <thead>  
                <tr>  
                    <th style="background-color: Yellow;color: blue">Full Name</th>  
                    <th style="background-color: Yellow;color: blue">Email</th>  
                    <th style="background-color: Yellow;color: blue">City</th>  
                    <th style="background-color: Yellow;color: blue">Country</th>  
                </tr>  
            </thead>  
            <tbody>  
                @foreach (var i in Model)  
               {  
                    <tr>  
                        <td>@i.FirstName @i.LastName</td>  
                        <td>@i.EmailID</td>  
                        <td>@i.City</td>  
                        <td>@i.Country</td>  
                    </tr>  
                }  
            </tbody>  
        </table>  
    </div>  

コードの説明

IEnumerable of Employeeをモデルオブジェクトとして使用して、モデルを.cshtmlページにバインドします。

@model IEnumerable<Entities.Employee> 

ASP.NET MVCビューでモデルアイテムをループするには、コントローラーでforeachループを使用します。これにより、アイテムのコレクションが返され、対応する列ヘッダーの下のテーブルに列データが表示されます。

@foreach (var i in Model)  
               {  
                    <tr>  
                        <td>@i.FirstName @i.LastName</td>  
                        <td>@i.EmailID</td>  
                        <td>@i.City</td>  
                        <td>@i.Country</td>  
                    </tr>  
                }  

出力

URLは次のとおりです:  http:// localhost:12477 / Home / Part2

 

まとめ

  • HttpClient ASP.NETWebAPIの概要。
  • HttpClientを使用してデータベースからデータを取得する手順。

ソース:https ://www.c-sharpcorner.com/article/asp-net-web-api-using-mvc-entity-framework-and-http-client-for-retrieve-data/ 

#aspdotnet #mvc #entityframework 

What is GEEK

Buddha Community

データを取得するためにMVC、Entity Framework、およびHttpClientを使用するASP.NET Web API
Hertha  Mayer

Hertha Mayer

1602668764

Announcing Entity Framework Core (EF Core) 5 RC2

Today, the Entity Framework Core team announces the second release candidate (RC2) of EF Core 5.0. This is a feature complete release candidate of EF Core 5.0 and ships with a “go live” license. You are supported using it in production. This is a great opportunity to start using EF Core 5.0 early while there is still time to fix remaining issues. We’re looking for reports of any remaining critical bugs that should be fixed before the final release.

Prerequisites

EF Core 5.0 will not run on .NET Standard 2.0 platforms, including .NET Framework.

How to get EF Core 5.0 Release Candidate 2

EF Core is distributed exclusively as a set of NuGet packages. For example, to add the SQL Server provider to your project, you can use the following command using the dotnet tool:

dotnet add package Microsoft.EntityFrameworkCore.SqlServer --version 5.0.0-rc.2.20475.6

#.net #.net core #.net framework #asp.net #c# #entity framework #announcement #asp.net core #entity framework core

Einar  Hintz

Einar Hintz

1602560783

jQuery Ajax CRUD in ASP.NET Core MVC with Modal Popup

In this article, we’ll discuss how to use jQuery Ajax for ASP.NET Core MVC CRUD Operations using Bootstrap Modal. With jQuery Ajax, we can make HTTP request to controller action methods without reloading the entire page, like a single page application.

To demonstrate CRUD operations – insert, update, delete and retrieve, the project will be dealing with details of a normal bank transaction. GitHub repository for this demo project : https://bit.ly/33KTJAu.

Sub-topics discussed :

  • Form design for insert and update operation.
  • Display forms in modal popup dialog.
  • Form post using jQuery Ajax.
  • Implement MVC CRUD operations with jQuery Ajax.
  • Loading spinner in .NET Core MVC.
  • Prevent direct access to MVC action method.

Create ASP.NET Core MVC Project

In Visual Studio 2019, Go to File > New > Project (Ctrl + Shift + N).

From new project window, Select Asp.Net Core Web Application_._

Image showing how to create ASP.NET Core Web API project in Visual Studio.

Once you provide the project name and location. Select Web Application(Model-View-Controller) and uncheck HTTPS Configuration. Above steps will create a brand new ASP.NET Core MVC project.

Showing project template selection for .NET Core MVC.

Setup a Database

Let’s create a database for this application using Entity Framework Core. For that we’ve to install corresponding NuGet Packages. Right click on project from solution explorer, select Manage NuGet Packages_,_ From browse tab, install following 3 packages.

Showing list of NuGet Packages for Entity Framework Core

Now let’s define DB model class file – /Models/TransactionModel.cs.

public class TransactionModel
{
    [Key]
    public int TransactionId { get; set; }

    [Column(TypeName ="nvarchar(12)")]
    [DisplayName("Account Number")]
    [Required(ErrorMessage ="This Field is required.")]
    [MaxLength(12,ErrorMessage ="Maximum 12 characters only")]
    public string AccountNumber { get; set; }

    [Column(TypeName ="nvarchar(100)")]
    [DisplayName("Beneficiary Name")]
    [Required(ErrorMessage = "This Field is required.")]
    public string BeneficiaryName { get; set; }

    [Column(TypeName ="nvarchar(100)")]
    [DisplayName("Bank Name")]
    [Required(ErrorMessage = "This Field is required.")]
    public string BankName { get; set; }

    [Column(TypeName ="nvarchar(11)")]
    [DisplayName("SWIFT Code")]
    [Required(ErrorMessage = "This Field is required.")]
    [MaxLength(11)]
    public string SWIFTCode { get; set; }

    [DisplayName("Amount")]
    [Required(ErrorMessage = "This Field is required.")]
    public int Amount { get; set; }

    [DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}")]
    public DateTime Date { get; set; }
}

C#Copy

Here we’ve defined model properties for the transaction with proper validation. Now let’s define  DbContextclass for EF Core.

#asp.net core article #asp.net core #add loading spinner in asp.net core #asp.net core crud without reloading #asp.net core jquery ajax form #asp.net core modal dialog #asp.net core mvc crud using jquery ajax #asp.net core mvc with jquery and ajax #asp.net core popup window #bootstrap modal popup in asp.net core mvc. bootstrap modal popup in asp.net core #delete and viewall in asp.net core #jquery ajax - insert #jquery ajax form post #modal popup dialog in asp.net core #no direct access action method #update #validation in modal popup