最も簡単な可能なASPを作成する.POSTメソッドを使用したNETコアフォーム
しかし、その間、私は単純な実験をしたかったですRazor page (CSHTML) これはユーザにHTMLフォームを提示し、HTTPSの上でポストと共にこのフォームを自身に提出するでしょう.
モデル付きかみそりページは本当にクールです
スーパーシンプルASP.NET Core MVCのないサイト誤解するな.MVC テスト容易性と保守性が原始的であるエンタープライズWebアプリケーションでは素晴らしいです.しかし、彼らも多くのオーバーヘッドで来ます.あなたが先に行くと“空”のASPを作成する場合.以下の赤いCircledテンプレートによるNET Core MVCウェブサイトは、多くのファイル(CSHTMLページ、コントローラ、セットアップ・クラス、JavaScript、CSSなど)で終わります.空のASPでも.NETコアMVCウェブサイトには38ファイル(!)が入っています.
ASP .NETコアレイザーとASP .Visual StudioのNETコアMVCテンプレート
別のオプションは、ASPを作成することです.かみそりページのみのNETコアWebアプリケーション.そのようなアプリでは、コントローラを排除し、あなたはPageModel CSHTMLかみそりページに付けられるインスタンス.これは間違いなく複雑でありません、そして、実際、私の個人的なウェブサイトはこのようにインプリメントされます.しかし、たとえあなたが上記のオレンジ色の丸いテンプレートを使ってこのように「空の」ウェブアプリケーションをつくっても、あなたはまだ多くのファイルで終わります、そして、それらの大部分を削除する必要があります.それは迷惑です、そして、私は上記のイメージで青で選ばれるもののような「本当に空の」テンプレートから始めるのを好みます.
Even though I use Visual Studio in this example, you can create the ASP.NET Core apps using a command line with the
dotnet new
syntax shown here.
ゼロから始まる
ゼロから始めましょう
Empty
上記のWebアプリのテンプレート.これを行うには、Visual Studio 2017で、ファイル、新しい、プロジェクトを選択して起動します.Before you start, you must make sure to have installed the .NET Core workload in the Visual Studio installer. You can always run the Visual Studio Installer from your Start menu, and check that the following workload is checked.
. NETコアワークロード
次の手順では、次のように空のWebアプリケーションを選択する必要があります.通常は良いアイデアですhttpsをデフォルトで有効にすることができます.我々の例では認証を使用しないので、このオプションを
No Authentication
. その後、「了解」をクリックします.かみそりページの設定
次の手順として、アプリケーションをRazorページに提供するよう設定します.これを行うには、ここで完全なMVC機能を使用しないとしても、MVCサービスを使用するようにアプリケーションに要求する必要があります.
ConfigureServices
次に示す方法public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
}
Configure
以下の方法public void Configure(
IApplicationBuilder app,
IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseMvc();
}
カミソリページの作成
この設定を使用すると、アプリケーションは
Pages
そして、ルート(URL)に対応するページにリクエストを指示します.この例では、できるだけ簡単にしたいので、デフォルトのルートを使用し、名前を付けたページを作成しますIndex.cshtml .Add
それからNew Folder
コンテキストメニューから.Pages
. Pages
フォルダと選択Add
それからRazor Page
コンテキストメニューから.Add scaffold
プレス・オン・ダイアログAdd
. Add Razor Page
ダイアログの名前を入力Index
そして、Generate PageModel class
を選択する.Use a layout page
それからプレスAdd
. This step can take a moment because a few Nuget packages need to be installed in order for the ASP.NET Core application, the routing and the Razor pages to work.
GETメソッドのテスト
デフォルトでは、ページはgetリクエストを受け取るように構成されています.これをテストします.
@model
ディレクティブ.これはASPを指示します.使用するネットIndexModel
クラスのIndex.cshtml.cs ) 呼び出しを処理する.You can also add code directly inside the Index.cshtml page, inline with the HTML markup. This is super convenient but it can also lead to some "spaghetti" code which is very hard to test. It is not recommended to do so, except for layout code (for example
for
loops to create lists, etc...).
localhost
お気に入りのWebブラウザのURL、例えばhttps://localhost:44367/
. Request
プロパティ等)ポスト機能の設定
我々が扱えるように
GET
呼び出しはOnGet
メソッド、ハンドルPOST
呼び出しはOnPost
メソッド.しかし、これは我々が表示されるように少し追加の設定が必要です.まず、1つのテキストフィールドをIndexModelクラスに投稿するHTMLフォームを準備しましょう.IndexModel
class , 型のプロパティを追加するstring
名前Message
. public string Message
{
get;
set;
}
OnGet
次に示す方法public void OnGet()
{
Message = "Enter your message here";
}
OnPost
: public void OnPost()
{
Message = Request.Form[nameof(Message)];
}
OnPost
メソッド.body
次のようになります.<body>
<form method="post">
<input asp-for="Message" />
<br />
<input type="submit" />
</form>
</body>
OnGet
メソッドは以前と同様に呼び出され、空の入力フィールドを持つHTMLフォームが表示されます.この時点で、私のように入力フィールドを初期化することを期待していた場合、あなたは驚くかもしれない
Message
特性the asp-for
attribute ). しかし、別の問題を見るためにさらにテストしましょう.不良リクエストエラー400の修正
迅速なオンライン検索では、問題はantiforgery tokens , ASPによるセキュリティ対策です.クロスサイトのリクエストforgery(CSRF)攻撃を避けるために.本質的に、トークンが何をするかは、フォームが生成したサイトからリクエストが来ることを証明します.
では、どうやってトークンを手に入れるのですか?ここは便利な名前空間ですcalled
Microsoft.AspNetCore.Mvc.TagHelpers
comes to play . これをCSHTMLページに追加すると、自動的にHTMLフォームにアンチフォルジェリートークンが生成され、the asp-for
attribute 我々はフォームに追加しました.@page
attribute , 追加the @addTagHelper
attribute ファイルが次のようになります.@page
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@model TestPostWithRazor.Pages.IndexModel
@{
Layout = null;
}
View page source
. ASP . NETによって生成された次のHTMLコードが表示されます.NETアプリケーション<body>
<form method="post">
<input type="text" id="Message" name="Message" value="Enter your message here" />
<br />
<input type="submit" />
<input name="__RequestVerificationToken" type="hidden" value="[Some token]" /></form>
</body>
OnPost
メソッドがヒットし、フィールドの内容がMessage
プロパティ.結論
時には、簡単です.この例では、空のASPを作成する方法を見ました.かみそりページ(および対応する)を使用した
PageModel
), そして、このアプリケーションを構成する方法GET
and POST
メソッド.これは、純粋なクライアント側のJavaScriptで動くページのような他のメカニズムの代わりにServerless Azure関数に話すことです.ここで提示された解決策はServerlessではありませんが、既にApaureのアプリケーションサービスプランを持っているなら、WindowsやLinuxでASPのクロスプラットフォーム機能に感謝します.ネットコア.うまくいけば、このコードはいくつかに役に立つでしょう.
ハッピーコーディング!
ローラン
Reference
この問題について(最も簡単な可能なASPを作成する.POSTメソッドを使用したNETコアフォーム), 我々は、より多くの情報をここで見つけました https://dev.to/azure/creating-the-simplest-possible-aspnet-core-form-with-a-post-method-416gテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol